Re: [RFC] Property Accessors 1.2 : Shadowing
| From: | Stas Malyshev | Date: | Fri, 26 Oct 2012 14:33:55 +0000 |
| Subject: | Re: [RFC] Property Accessors 1.2 : Shadowing | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-63648@lists.php.net to get a copy of this message | ||
Hi!
> v1.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.
--
Stanislav Malyshev, Software Architect
SugarCRM: http://www.sugarcrm.com/
(408)454-6900 ext. 227