2008/5/7 Jeff Moore <[EMAIL PROTECTED]>: > > On May 6, 2008, at 12:45 PM, Marcus Boerger wrote: > > > > public $property { > > __get = getProperty; > > __set = setProperty; > > } > > string public function getProperty() { > > return $this->_property; > > } > > string protected function setProperty(string $value) {} > > > > Hi Marcus, > > I prefer this approach. > > One advantage is that it is compatible with existing classes that have done > the getXXX() style accessors already. > > One thing That I am hoping to avoid, though, is the need to declare these > kinds of basic accessor methods at all. (the ones that do nothing but set > or read a backing property.) it seems like PHP should be able to generate > them, or just fallback into a simple property access on the backing store, > if that store is specified as part of the property. > > This should be the same as the previous example replacing setProperty and > getProperty with direct references to the backing store: > > protected $_property; > public $property { > __get = $_property; > __set = $_property; > > } > > > > Or do we force people to always specify > > get,set,isset und unset? Or should we only enforce get/set and have isset > > and unset emulated with them (isset()~>isset(get()), unset()~>set(NULL))? > > > > it would be nice to have exactly this emulation for __isset and __unset > when they are not declared. > > However, leaving out the __set should make the property read only and > leaving out the __get should make the property write only (less useful, but > symmetric). > > Following the C# convention for declaring properties in interfaces would > declare the previous as > > interface bar { > public $property {__set; __get;} > } > > Best Regards, > > Jeff
If the interface iFoo says property bar must be implemented, then it would seem inappropriate to allow the unsetting of property bar. My reasoning is that the interface says this is how all objects implementing this interface look (the contract), then allowing one of the instances to remove the property breaks the contract. If you follow this (I hope someone does), then as a consequence, isset now becomes slightly different in that it is behaving more like an empty(). Regards, Richard. -- ----- Richard Quadling Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731 "Standing on the shoulders of some very clever giants!" -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php