From: forseti at oak dot rpg dot pl
Operating system: Windows 98 SE
PHP version: 5.0.0b2 (beta2)
PHP Bug Type: Zend Engine 2 problem
Bug description: Inherited methods can't access private methods

Description:
------------
When a method is inherited from a base class it seems that it retains its
context. When it's called from derived class object, it turns out that
method cannot access private fields of it's own (derived class) object.

What's strange, the inherited method can access protected fields easily.
As if 'protected' opened access not only for derived classes but for base
classes too.

This is a key issue if one wants to code the accessor only once, in base
class so that any derived class could use it and provide read-only access
to any field.

Reproduce code:
---------------
<?php
class ParentClass {
protected $a = 'ParentClass<br>';
public function get($arg) {
return $this->$arg;
}
}

class ChildClass extends ParentClass{
protected $b = 'ChildClass - Protected<br>';
private $c = 'ChildClass - Private<br>';

}

$test = new ChildClass;
echo $test->get('a');
echo $test->get('c'); //fatal error
echo $test->get('b'); //strange - it's ok
?>

Expected result:
----------------
ParentClass
ChildClass - Protected
ChildClass - Private

Anyway, 'protected' field should be accessible only in derived classes and
where declared.

Actual result:
--------------
ParentClass
ChildClass - Protected

Fatal error: Cannot access private property childclass::$c

--
Edit bug report at [url]http://bugs.php.net/?id=26350&edit=1[/url]
--
Try a CVS snapshot (php4): [url]http://bugs.php.net/fix.php?id=26350&r=trysnapshot4[/url]
Try a CVS snapshot (php5): [url]http://bugs.php.net/fix.php?id=26350&r=trysnapshot5[/url]
Fixed in CVS: [url]http://bugs.php.net/fix.php?id=26350&r=fixedcvs[/url]
Fixed in release: [url]http://bugs.php.net/fix.php?id=26350&r=alreadyfixed[/url]
Need backtrace: [url]http://bugs.php.net/fix.php?id=26350&r=needtrace[/url]
Try newer version: [url]http://bugs.php.net/fix.php?id=26350&r=oldversion[/url]
Not developer issue: [url]http://bugs.php.net/fix.php?id=26350&r=support[/url]
Expected behavior: [url]http://bugs.php.net/fix.php?id=26350&r=notwrong[/url]
Not enough info: [url]http://bugs.php.net/fix.php?id=26350&r=notenoughinfo[/url]
Submitted twice: [url]http://bugs.php.net/fix.php?id=26350&r=submittedtwice[/url]
register_globals: [url]http://bugs.php.net/fix.php?id=26350&r=globals[/url]
PHP 3 support discontinued: [url]http://bugs.php.net/fix.php?id=26350&r=php3[/url]
Daylight Savings: [url]http://bugs.php.net/fix.php?id=26350&r=dst[/url]
IIS Stability: [url]http://bugs.php.net/fix.php?id=26350&r=isapi[/url]
Install GNU Sed: [url]http://bugs.php.net/fix.php?id=26350&r=gnused[/url]
Floating point limitations: [url]http://bugs.php.net/fix.php?id=26350&r=float[/url]