>
> 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.

Reply via email to