2010/11/26 Johannes Schlüter <[email protected]>
> On Fri, 2010-11-26 at 17:36 -0200, Felipe Pena wrote:
> > var_dump(new foo()->bar()->x); // string(3) "PHP"
>
> It has some readability issues. One might assume it is
>
> new (foo()->bar()->x)
>
> not
>
> (new foo())->bar()->x
>
> As there is a mandatory space between "new" and its operand and no space
> in front of the object operator and we allow non-constant operands to
> "new".
>
> So what is
>
> new $bar->foo();
>
> ? If I read the patch correctly this is valid and evaluated as
>
> (new $bar)->foo();
>
> johannes
>
>
new foo()->bar() should be read as: (new foo())->bar().
And using variable:
new $bar->y()->x should be read as: (new ($bar->y)())->x.
<?php
class foo {
public $x = 1;
}
class bar {
public $y = 'foo';
}
$bar = new bar;
var_dump(new $bar->y()->x); // 1
?>
I.e. just as it is nowdays.
--
Regards,
Felipe Pena