> > Hello internals. > > I am looking into making the constructor body optional in classes, > essentially allowing you to write > > ``` > class User { > public function __construct( > private string $name, > ) > } > ``` > > Currently to make this code valid, it would have to be written the following > way > > ``` > class User { > public function __construct( > public string $name, > ) {} > } > ``` > > With the introduction or constructor property promotion in 8.0, we often see > classes where the constructor has an empty body, and my guess would be that > this will only increase with the introduction of property access hooks in 8.4 > which is allowed to be defined in the constructor also. > > This change would only be a cosmetic change and simplify the userland code by > removing two redundant characters. > > > > This would be my first RFC and I am willing to try and implement it myself. > > > Best regards > Oliver Nybroe (he/him)
Hi Oliver, Some links to previous discussions when this was brought up in the mailing list before: - https://externals.io/message/114324 - https://externals.io/message/111590 I followed those discussions closely back then, and I suppose the general sentiment (to which I also agree) was that this is more of a code style consideration rather than a technical one. Although it's a cosmetic change, the fact that it will cause BC issues on older PHP versions was a significant concern; now more so after we had Constructor Properties for 4 years. I think you can gather more pre-RFC opinions from this mailing thread, especially now that this is brought up after a while since Constructor Properties were introduced. If you do with to go with an RFC, I'd like to see if your proposal addresses whether this syntax should implicitly call `parent::__construct()`, and if a semi colon is expected or not (`public function __construct(public int $foo);` vs `public function __construct(public int $foo)`). Ayesh.