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