PHP继承怪异使用$ this运算符

时间:2013-06-02 13:01:35

标签: php inheritance this extends

我有一个小问题。在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

任何人都可以用一种简单的方式解释为什么在一个例子中引用$ this指向父方法(私有方法)而在另一个例子中指向子类(public)中定义的当前方法? 这对我来说不合逻辑,我希望它指向两个案例中的子类方法或两种情况下的父方法?

请帮忙!

1 个答案:

答案 0 :(得分:1)

这是因为子类只能访问父项的方法,如果它是publicprotected,而不是private。所以它采用自己的私有方法。

如果您始终想要调用当前类的方法,请使用self::代替$this->