Le 26/11/2020 à 17:30, David Rodrigues a écrit :
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.
Atenciosamente,
David Rodrigues
It sounds weird for me, I can see two naive questions:
- what will happen if you don't call the method, will the property
still exists on the object ?
- what will happen if you define it on more than one method ?
And one more serious regarding code readability and maintainability: for
me, class constructors and classic class property definition acts
together as an index, that I can read to know what's inside a type
structure ; if you start to explode that everywhere in arbitrary places
code and I have to read and understand in order to use it, I will get
angry very quickly, If I can't find property definitions neither in
their rightful place, nor in the constructor.
If you code looks like a puzzle that you have to solve in order to
understand what it does, it's probably not that good.
I don't like this idea.
--
Pierre
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php