Thanks for sharing previous discussions, I will definitely take a look at those before writing up the RFC.
> 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)`). Thank you, these are very valuable points to address in the RFC. I can definitely feel that there will be some mixed opinions about semicolon vs no semi colon. Best regards Oliver Nybroe (he/him) On Thu, 18 Jul 2024 at 11:49, Lily Bergonzat <lilybergonzat+...@gmail.com> wrote: > I don't view this proposition as a breaking change. The way I > understand it, writing an empty body for a constructor would > still work, but we would also get the option to just omit the > body altogether. > > I think it would be a very sensible update. I also think it should > require a semicolon, just so we have the same kind of syntax > as interfaces. > > I would love to see such a change! > > On Thu, Jul 18, 2024 at 11:46 AM Ayesh Karunaratne <ayesh@php.watch> > wrote: > > > > > > > > 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. >