Re: [VOTE] Property Accessors for 5.5

From: 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

« previous php.internals (#65113) next »