0

我有一个小问题。在 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 指向父方法(私有方法)而在另一个示例中指向子类(公共)中定义的当前方法?这对我来说不合逻辑,我希望它在两种情况下都指向子类方法或在两种情况下都指向父方法?

请帮忙!

4

1 回答 1

1

这是因为子类只能访问父类的方法,如果它是publicor protected,而不是private。所以它求助于自己的私有方法。

如果您总是想调用当前类的方法,请使用self::而不是$this->.

于 2013-06-02T13:09:55.900 回答