2010/11/26 Johannes Schlüter <johan...@schlueters.de>

> 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

Reply via email to