> On 15. Jul 2025, at 01:22, Rob Landers <rob@bottled.codes> wrote: > >> 5. Inline constructor isn’t necessary and could be proposed separately. I’ve >> thought recently about this feature > > I will probably remove this, to be honest. It was for nesting records inside > classes or other records, but this feature was declined, so there isn't > really a need for it.
Hey Rob, Personally, I was really excited to see inline constructors in the proposal. And I would go even further than what you proposed. While you already work on something completely new, why not drop `__construct` completely? Dreaming out loud… ```php record User(string $name, string $emailAddress) => ( // init constructor start if (!is_valid_email($emailAddress)) { // doesn't require $this throw new InvalidArgumentException('Invalid email address'); } $this->id = hash('sha256', $emailAddress); $this->name = ucwords($name); // all properties are now immutable ) { // actual body with everything else public string $id; } ``` With that: - Both constructors would be kept together at the top; not an additional constructor potentially after some properties and maybe methods. - An extra level of indentation is avoided because there is no `__construct` around it. - Reading doesn’t required `$this` for `$name` and `$emailAddress` because we are not in an argument-free traditional constructor. I think the same about the proposed Struct RFC, fwiw. Both care not classes. So, why not make them more lean than classes, and feel clearly different to classes? -- Cheers, Nick