On Mon, 17 Aug 2020 at 19:46, Mathieu Rochette <math...@rochette.cc> wrote:

> Hi,
>
>
>
> I’m writing a message here to receive feedback on a two ideas related to
> class constructors before going more in details with an RFC. I hope this is
> appropriate behavior for this list
>
>
>
> With the Constructor Property Promotion accepted in PHP 8, there’s a lot
> less of boilerplate when writing class constructors. I’m suggesting two
> additional ways of making thing even easier and I hope, readable.
>
>
>
> First: I’d like to be able to automatically transfer a constructor
> property to its parent constructor. I’m thinking of something like that:
>
>
>
> ```php
>
> class MyCommand extends Command
>
> {
>
>    public function __construct(
>
>        private Connection $connection,

Why do you use visibility modifier inside here?

>
>
>        parent string $name,
>
>    ) {

C# has something like this ) : base($name)

>
>
>    }
>
> }
>
> ```
>
>
>
> This would be the equivalent of :
>
>
>
> ```php
>
> class MyCommand extends Command
>
> {
>
>    public function __construct(
>
>        private Connection $connection,
>
>        string $name,
>
>    ) {
>
>        parent::__construct($name);
>
>    }
>
> }
>
> ```
>
>
>
> The second idea is to make the constructor body optional, the first example
> would now be:
>
>
>
> ```php
>
> class MyCommand extends Command
>
> {
>
>    public function __construct(
>
>        private Connection $connection,
>
>        parent string $name,
>
>    )
>
> }
>
> ```
>
>
>
> This would call the parent constructor automatically even if no "parent"
> parameter are present. I could even see this enforced by linter to avoid
> having logic in the constructors.
>
>
>
> If there is interest I’d like to try writing an rfc and implement it. I
> have not much knowledge of the php-src code but I hope this is a small
> enough change that I’ll be able to tackle. So, at that time if someone is
> interested in mentoring this little project I’d appreciate it :)
>
>
>
>
>
> regards,
>
>
>
> Mathieu

Reply via email to