Jingcheng Zhang wrote: > Well, yes, "private" denies accessing from other class(including its child > class), this is what "encapsulation" means. But when refering to > inheritance, why forbids private properties/methods being *extended* to > child classes? This is what I mean, as the following example: > > <?php > class p { > protected $foo = 'foo'; > private $bar = 'bar'; > } > class c extends p { > public function f() { > $o = new p(); > $o->foo = 'FOO'; // Correct, "foo" is protected property of p and > thus allow accessing from child class > $o->bar = 'BAR'; // Incorrect, "bar" is private property of > *class p* here > } > public function g() { > $this->foo = 'FOO'; // Correct, "foo" is > $this->bar = 'BAR'; // Should be OK, as "bar" is private property of > *class c* here > } > } > ?> >
Access modifiers aren't for specifying access that "instances" have to members, it is for specifying access that "classes" have to members. Instances != Classes. The behavior you want above can be done just as easily just using protected members and I don't see how using protected members would hurt you. > Thanks. > > > On Dec 1, 2007 12:57 AM, Johannes Schlüter <[EMAIL PROTECTED]> wrote: > > >> Hi, >> >> On Sat, 2007-12-01 at 00:24 +0800, "Jingcheng Zhang" wrote: >> >>> Hi Etienne, >>> Is "private" only an access limiter between classes?If so, I think >>> >> private >> >>> properties and methods should be OK to be extended into the child class, >>> >> but >> >>> currently that's not the case, and there is also a bug here, consider >>> >> the >> >>> following example: >>> >> The child class is another class, "private" gives you encapsulation >> inside the base class's context. and preventing acces from other class's >> context. >> >> johannes >> >> >> > > > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php