ID: 29536 Updated by: [EMAIL PROTECTED] Reported By: mdhp at gmx dot de Status: Bogus Bug Type: Documentation problem PHP Version: Irrelevant New Comment:
This page has been removed from the manual, and replaced with: http://php.net/manual/en/language.oop5.visibility.php (you report seems to be solved in the CVS of this new page) Previous Comments: ------------------------------------------------------------------------ [2004-08-05 14:59:14] mdhp at gmx dot de Description: ------------ In Manual (http://www.php.net/manual/en/migration5.oop.php) Migrating from PHP 4 to PHP 5 New Object Model Example B-4. Private and Protected Members accesibility. Some output-hints/descriptions were wrong and var definition(content) confusing. Reproduce code: --------------- <?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 */ $obj = new MyClass2(); 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(); ?> Expected result: ---------------- <?php class MyClass { private $Hello = "Hello, World!\n"; protected $Bar = "Hello, Bar!\n"; protected $Foo = "Hello, Foo!\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; /* Should print */ print "MyClass2::printHello() " . $this->Foo; /* Should print but empty */ } } $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 */ $obj = new MyClass2(); 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(); ?> ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=29536&edit=1
