Re: [VOTE] Property Accessors for 5.5
| From: | Anthony Ferrara | Date: | Wed, 23 Jan 2013 14:03:53 +0000 |
| Subject: | Re: [VOTE] Property Accessors for 5.5 | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-65113@lists.php.net to get a copy of this message | ||
Sherif,
Don't get me wrong, I liked it, but I also disliked the fact that it
> introduces language changes that aren't easy to grasp or document. To me
> this means we've borderline changed the behavior of a property (which most
> PHP users currently understand to be a variable) into potential methods.
> This is basically saying we can now completely change the behavior of a
> property from a storage unit to a functional unit. That's a bit of a scary
> thought to me, because it makes me question everything I know about
> properties in PHP.
>
Except that everything that's proposed here is possible today with __get,
__set, __isset and __unset. So already today you can't assume that a
property is a "variable". In fact, you could build something like this
using __get, etc extremely dirty:
class Foo {
public function __get($name) {
$method = 'get' . ucfirst($name);
if (method_exists($this, $method)) {
return $this->method();
}
return $this->$name; // public properties
}
public function __set($name, $value) {
$method = 'set' . ucfirst($name);
if (method_exists($this, $method)) {
return $this->method($value);
}
return $this->$name = $value; // public properties
}
}
The difference in functionality that this provides is the ability to
custom-scope getters and setters. And it's a LOT cleaner...
Anthony