Hi List, <?php error_reporting(E_ALL);
class aaa { protected $_parent = null; private $_value = 0; public function setValue($value) { $this->_value = $value; } public function getValue) { return $this->_value; } public function setParent( $oParent ) { $this->_parent = $oParent; } public function showParentValue() { return $this->_parent->_value; } } $aa = new aaa(); $aa->setValue(500); $bb = new aaa(); $bb->setParent($aa); echo $bb->showParentValue() . PHP_EOL; ?> The code above shows me a feature thats bypass my class design. :) With this code it is possible to access the private class property _value from $aa. Output: 500 If i us a other class like : class cc { private $_value = 'foo'; } $aa = new cc(); $bb = new aaa(); $bb->setParent($aa); echo $bb->showParentValue() . PHP_EOL; i get an error that tells me cc:$_value is private and could not be accessed. Thats ok. But with this change i cant overload or change my property in any way. class cc extends aaa { private $_value = 'foo'; } $aa = new cc(); $bb = new aaa(); $bb->setParent($aa); echo $bb->showParentValue() . PHP_EOL; echo $aa->getValue() . PHP_EOL; the output is: 0 0 Thats a bit strange to me because i expected a different behavior. Conclusion: 1. Why i can access a private property from a different class instance (name) but same type ? $aa and $bb are instances of aaa but not the same. 2. This doesnt works if cc is a own class with same property name (ie. interface or something like this) 3. Is it a bug that i can't use same property name in my child class? (normaly the parent property isnt visible to the child) cc extends aaa. Thats just some questions :) -- Marco -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php