On Thu, Nov 26, 2020 at 5:31 PM David Rodrigues <david.pro...@gmail.com>
wrote:

> Hello!
>
> It is just an idea to discuss. PHP 8 now supports parameter promotion via
> constructor. Could this idea also work for common methods?
>
> public function setAge(private int $age) {}
> ===
> private int $age;
> public function setAge(int $age) { $this->age = $age; }
>
> The only problem I can see would be the difficulty of identification of the
> possible properties, since it would be necessary to check all method
> signatures to know about all possible properties.
>
> In this case, perhaps, it would be enough to allow the promotion only if
> the property already exists.
>
> private int $age; // Required.
> public function setAge(private int $age) {}
>
> Just to think about whether it is possible to think of something along
> these lines, but I'm still not sure if it's a good option.
>

Same as the others, this doesn't make much sense to me. The "private int
$age" syntax is supposed to combine a property declaration and a property
assignment, while here you seem to only want half of that. I think if we
really want to have a short-hand syntax for this, it should be:

    public function setAge(int $this->age) {}

However, I don't think this is actually worthwhile. Since the introduction
of typed properties in PHP 7.4, I would consider getters/setters to be an
anti-pattern in nearly all cases, and a potential future addition of
accessors would obviate the need for them entirely.

Regards,
Nikita

Reply via email to