Though this is truly a stylistic complaint, I think it will lead to harder-to-analyse code.
Currently I have a static analysis tool that can verify (in 99% of cases) whether all properties of a class have been initialised in the constructor. This check is even more important in PHP 7.4, where use of a property without instantiation is a fatal error. Figuring out which properties have been instantiated in a constructor is non-trivial, and it's only efficient to do it once per class. If we adopt this into the language and people use both __construct and object initializers for a given class, analysis would become much more tricky. In order to find the error in this: abstract class A { public string $s; public int $t; } class B extends A { public bool $u; public function __construct() { $this->s = "hello"; } } $b = new C { u = true }; The analyzer needs to understand that the initialisation of B left a property uninitialised - it warns about it in B's constructor ( https://psalm.dev/r/0e8e40fefc) but I worry that people will start to dismiss those warnings as false-positives if this pattern becomes popular. Best wishes, Matt On Thu, 12 Sep 2019 at 10:00, Michał Brzuchalski < michal.brzuchal...@gmail.com> wrote: > Hi internals, > > I'd like to open discussion about RFC: Object Initializer. > > This proposal reduces boilerplate of object instantiation and properties > initialization in case of classes without required constructor arguments as > a single expression with initializer block. > > https://wiki.php.net/rfc/object-initializer > > I appreciate any feedback you all can provide. > > Thanks, > -- > Michał Brzuchalski > brzuc...@php.net >