Re: Questionable private $varname behavior
| From: | Andi Gutmans | Date: | Sat, 12 Jul 2003 17:16:51 +0000 |
| Subject: | Re: Questionable private $varname behavior | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-3388@lists.php.net to get a copy of this message | ||
At 07:27 PM 11/7/2003 -0400, Greg Beaver wrote:
Hi, a discussion on php.general led to the discovery of this oddly legal script: <?php class dog {Seems to be expected behavior to me. poodle doesn't *know* the private variable "Name" so when you use $poppy->Name it declares a public member instead. As printName() is inherited from the base class it accesses the private member and not the public one. Andi// declare two private variables private $Name; private $DogTag;public function bark() { print "Woof!\n"; }public function printName() { print $this->Name; // prints nothing! }} // new class, for testing derived stuff class poodle extends dog {public function bark() { print "Yip!\n"; }} // I now create an instance of the // derived class $poppy = new poodle; // and set its private property $poppy->Name = "Poppy"; print $poppy->Name. "\n"; $poppy->printName(); print_r($poppy); ?> outputs: Poppy poodle Object ([Name:private] => [DogTag:private] => [Name] => Poppy) Is this expected behavior or should I open a bug?