Re: [RFC] Property Accessors 1.2 : Shadowing
| From: | Clint Priest | Date: | Sat, 27 Oct 2012 17:35:45 +0000 |
| Subject: | Re: [RFC] Property Accessors 1.2 : Shadowing | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-63666@lists.php.net to get a copy of this message | ||
Recursion is guarded by the same mechanism __get uses to avoid recursion.
On 10/26/2012 9:33 AM, Stas Malyshev wrote:
Hi!-- -Clintv1.2 Proposes that this be inverted such that if there is an accessor defined for a given property name, the accessor will always be used. The accessor would be able to get/set/isset/unset the property with the same name as the accessor. No direct access to the property would be allowed except from within the accessor.One of the deficiencies frequently mentioned for __get was "what if I want to override access for existing variable?" Given that, I think accessor priority is a good thing. Now, with direct access from within the accessor it may get a bit tricky, especially considering loops, etc. What would happen in the scenario of __getHours calling foo() which does "return $this->Hours"? Is __getHours called again? Is it a fatal error? Does it return "undefined" like __get does?v1.2 proposal seems to make the most sense however it would incur a slight (possibly *very* slight) performance penalty.It may be an extra hash lookup, but if we could probably add the existence of accessor (or maybe even pointer) into zend_property_info then we wouldn't need the second hash lookup probably.