2012/3/15 Jeremy Wei <shuimuqing...@gmail.com>:
> I read the manual about  method visibility, but i can't understand the
> code below:
> <?php
> class Bar
> {
>    public function test() {
>        $this->testPrivate();
>        $this->testPublic();
>    }
>
>    public function testPublic() {
>        echo "Bar::testPublic\n";
>    }
>
>    private function testPrivate() {
>        echo "Bar::testPrivate\n";
>    }
> }
>
> class Foo extends Bar
> {
>    public function testPublic() {
>        echo "Foo::testPublic\n";
>    }
>
>    private function testPrivate() {
>        echo "Foo::testPrivate\n";
>    }
> }
>
> $myFoo = new foo();
> $myFoo->test(); // Bar::testPrivate
>                     // Foo::testPublic
> ?>
>
> in class Bar's method test, why "$this->testPrivate();"  invoked
> testPrivate method of class Bar,
> but not the testPrivate of class Foo?  here $this shoud be the
> reference of the instance of class Foo,
> isn't it?
>

Since you're executing this from the class Bar, the only visible
testPrivate function there is Bar::testPrivate. This would work the
way you expect it only if the test() function was inside class Foo.

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to