Arnold,

> This can easily be done in a number of ways, like the suggested helper
> function.

A helper function can simulate an object initializer but it cannot provide the 
same potential benefits. 

The helper function uses array keys to identify properties, and as array keys 
cannot be declared like class properties, neither IDE, tools, nor PHP itself 
can validate the names and types of those keys like they could if object 
initializers were used instead.



Michal,

> I don't like how it works for anonymous classes. It's more difficult to
> implement since the compiler doesn't know the meaning of the (first)
> bracket. It's doesn't make the code more readable, for the same reason. I
> think it's better to not support this syntax with anonymous classes.
> 
> The examples do not show how constructor arguments are passed. I'm assuming
> it's
> 
>    $customer = new Customer("foo") {
>        name = "John"
>    };
> 
> About the idea of letting `{ foo = 10 }` create an `stdClass` object (not
> in the RFC); While not used much since it has no effect, it's perfectly
> okay to put your code in brackets eg `{ { { $foo = 10; } } }`. As such, I
> don't think it's a good idea to allow `new stdClass` to be omitted.


I am curious why your RFC uses "=" instead of "=>" for separating properties 
from values?  

If we used "=>" it is potential — with lookahead parsing — that the following 
could be unambiguous:

{ foo => 10 }

-Mike

Reply via email to