On Sat, 2013-07-20 at 14:28 +1000, Ryan McCue wrote:
> Sara Golemon wrote:
> > Well, now... to be fair... You could make them functions and use the same
> > parser trick the backtick operator uses. to map the non-parenthesized
> > versions.... feels messy though.  I'd just hate to get stuck with a hacky
> > workaround like that for the long term.
> 
> That's what I meant by the "backwards compatibility layer". Not saying
> we have to deprecate the use as a construct, but why can't we enable the
> use as a function (and hence, callback, etc)? It feels less cleaner from
> my point of view (userland).

There again is a thing we can't emulate using functions: The operator
precedence when using () with echo is "special":

php > echo(0) || print(1);
11

alright, that's weird isn't it? Anyways let's try to emulate using a
function:

php > function echo_func($foo) {
php {     echo $foo;
php { }
php > echo_func(0) || print(1);
01

damn different result, ah, echo-func returns NULL maybe when we return
true?

php function echo_func1($foo) {
php {     echo $foo;
php {     return true;
php { }
php > echo_func1(0) || print(1);
0

still not. Reason is that currently in 

  echo(0) || print(1);

the expression (0) || print(1) is evaluated first and then the result is
passed to echo.

Maybe one might have designed it differently but more than 15 years into
the game it's hard.

johannes



-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to