ID: 29689 Updated by: [EMAIL PROTECTED] Reported By: php dot net at benjamin dot schulz dot name -Status: Open +Status: Assigned Bug Type: Zend Engine 2 problem Operating System: * -PHP Version: 5CVS-2005-03-07 +PHP Version: 5CVS-2005-04-19 -Assigned To: +Assigned To: andi New Comment:
<?php class foo { private $foo = 'foo'; function printFoo1() { echo __CLASS__, ': ', $this->foo, "\n"; } } class bar extends foo { protected $foo = 'bar'; function printFoo2() { echo __CLASS__, ': ', $this->foo, "\n"; } } class baz extends bar { protected $foo = 'baz'; function printFoo3() { echo __CLASS__, ': ', $this->foo, "\n"; } } $bar = new baz; $bar->printFoo1(); $bar->printFoo2(); $bar->printFoo3(); ?> Outputs: foo: baz bar: baz baz: baz When it should output: foo: foo bar: bar baz: baz Right? Previous Comments: ------------------------------------------------------------------------ [2004-08-31 19:00:41] php dot net at benjamin dot schulz dot name you don't get the point, the problem is that baz's protected $foo overrides foo's private $foo, that should not happen using parent::foo() is a common technique, and there is a $this because it get's the context of the calling point ------------------------------------------------------------------------ [2004-08-31 18:32:35] [EMAIL PROTECTED] Please, be more verbose next time if you want to get any help. Your conciseness doesn't help very much. The problem is that you're trying to access class members through $this variable using static methods. As you can understand in this case there is no $this and behavior seems to be undefined (shouldn't there be an error, btw?). ------------------------------------------------------------------------ [2004-08-31 17:48:56] php dot net at benjamin dot schulz dot name yep tony, you're right, and now read the bug report ------------------------------------------------------------------------ [2004-08-31 16:24:10] [EMAIL PROTECTED] Private members belong only to the class where they were defined and cannot be inherited. ------------------------------------------------------------------------ [2004-08-15 22:03:50] php dot net at benjamin dot schulz dot name default value of protected member overrides default value of private ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/29689 -- Edit this bug report at http://bugs.php.net/?id=29689&edit=1