Below is the first php example found in "Changes in PHP 5/Zend Engine 2.0 "
<?php class MyClass { private $Hello = "Hello, World!\n"; protected $Bar = "Hello, Foo!\n"; protected $Foo = "Hello, Bar!\n"; function printHello() { print "MyClass::printHello() " . $this->Hello; print "MyClass::printHello() " . $this->Bar; print "MyClass::printHello() " . $this->Foo; } } class MyClass2 extends MyClass { protected $Foo; function printHello() { MyClass::printHello(); /* Should print */ print "MyClass2::printHello() " . $this->Hello; /* Shouldn't print out anything */ print "MyClass2::printHello() " . $this->Bar; /* Shouldn't print (not declared)*/ print "MyClass2::printHello() " . $this->Foo; /* Should print */ } } $obj = new MyClass(); print $obj->Hello; /* Shouldn't print out anything */ print $obj->Bar; /* Shouldn't print out anything */ print $obj->Foo; /* Shouldn't print out anything */ $obj->printHello(); /* Should print */ ?> The result not same as stated in the remark. No print for $obj->printHello(). It only print with the code below $obj = new MyClass(); //print $obj->Hello; /* Shouldn't print out anything */ //print $obj->Bar; /* Shouldn't print out anything */ //print $obj->Foo; /* Shouldn't print out anything */ $obj->printHello(); /* Should print */ Accessing protected variable cause the output fail, why? -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php