Re: Weird behaviour of private attribute + overloaded method

From: Date: Tue, 15 Jun 2004 14:11:04 +0000
Subject: Re: Weird behaviour of private attribute + overloaded method
References: 1  Groups: php.internals php.internals 
Request: Send a blank email to internals+get-10472@lists.php.net to get a copy of this message
Hi, This is expected since the property is marked private, meaning its only accessable within its own scope, not for extended classes. For that you need to use protected, as you mention. ray - e: ray.hilton@memefeeder.com w: http://www.memefeeder.com Antony Dovgal wrote:
Hi all! What do you expect from this code? <?php class Foo{ private $id = false; public function getId () { return $this->id; } public function setId ($id) { return $this->id = $id; } } class Bar extends Foo { public function setId ($id) { return $this->id = $id; } } $b = new Bar; $b->setId(123); var_dump($b->getId()); ?> It outputs 'bool(false)', while I expect it to print 'int(123)'. Changing private $id to public or protected solves the problem. Adding getId() method to the Bar solves it too, but this is obviously rather silly solution. Am I missing something and this is really expected behaviour ? --- WBR, Antony Dovgal aka tony2001 tony2001@phpclub.net || antony@dovgal.com


« previous php.internals (#10472) next »