Hi,
that's imho expected behaviour. To quote
http://www.php.net/zend-engine-2.php
| Protected member variables can be accessed in classes extending the class
| they are declared in, whereas private member variables can only be
| accessed by the class they belong to.
And $id belongs to the base class and not to the extended. What else should
be the difference between private and protected?
johannes
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
> [EMAIL PROTECTED] || [EMAIL PROTECTED]
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php