On 8/17/20 7:14 PM, Lokrain wrote:
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?
This the new PHP 8 feature brought by the Constructor Property Promotion
RFC: https://wiki.php.net/rfc/constructor_promotion
<https://wiki.php.net/rfc/constructor_promotion>
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
--
Mathieu Rochette