0

少し質問があります。PHP のマニュアル サイトには、次の 1 つの例があります。

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

これは、子クラスが親のメソッドにアクセスできるのは、それがpublicまたはの場合のみprotectedであり、 ではないためprivateです。そのため、独自のプライベート メソッドに頼っています。

常に現在のクラスのメソッドを呼び出したい場合は、self::代わりに$this->.

于 2013-06-02T13:09:55.900 に答える