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,

       parent string $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