isset/unset property hooks I could definitely see having the isset and unset hooks as well, anyone disagree with that? I would expect them to syntactically show up as such:
public $Hours { get { ... } set { ... } isset { return true; /* returns bool */ } unset { unset(...); /* returns void */ } } Thoughts? Operators I've tested with a number of the operators and they are all working as expected. I have updated the RFC to reflect that. I will also write tests for reference access as well as with some functions such as sort(), is_*(), empty() and some others. Other suggestions on functions we should write tests for? read-only/write-only There are people on both sides of the fence, where do I go from here, put it up for a specific vote? parent∷ scope access For the parent::$Milliseconds comment by Stanislav. This was in the original RFC and I think it fits well since it's the same syntax that would be used in a function to access a parent function, such as function a() { /* ... */ return parent::a(); } Though I have not used the parent::$xxx to access static values myself I know it's possible. Right now using parent:: format would first look for a parent accessor, then a parent static accessor, then would follow normal functionality, to access a parent static reference. I've documented this in the RFC under Overloading Properties now. What other format/keyword would make as much sense as parent::? -Clint -----Original Message----- From: patrick.alla...@gmail.com [mailto:patrick.alla...@gmail.com] On Behalf Of Patrick ALLAERT Sent: Friday, April 20, 2012 5:36 AM To: Stas Malyshev Cc: Clint M Priest; internals@lists.php.net Subject: Re: [PHP-DEV] RFC: Property get/set syntax 2012/4/20 Stas Malyshev <smalys...@sugarcrm.com<mailto:smalys...@sugarcrm.com>>: > How these would work with isset - what !empty($this->Hours) return? > What would happen if you do unset($this->Hours)? What happens if you > do $this->Hours++ or sort($this->Hours) (assuming $Hours is an array)? > These things need to be defined in the RFC too. My suggestion is to support the same methods for properties as we do for magic class methods: __set, __get, __isset and __unset. All the other operations (sort, ++, <<,...) should behave exactly as if it was be implemented with current magic class methods with a usual switch/case statement.