2

次のクラス階層があるとします。

class ParentClass {
    private static $_test;

    public function returnTest() {
        return static::$_test;
    }
}
class ChildClass extends ParentClass {
    // intentionally left blank
}
$child = new ChildClass();
echo $child->returnTest();

生成される出力は、次のエラー メッセージ
Fatal error: Cannot access property ChildClass::$_test
です。上書きされていない親クラスの関数を呼び出しているので、上記のようなことをしてもいいような気がします。

4

2 に答える 2

2

インスタンス化されたクラスから静的プロパティを呼び出しています。クラスの名前を使用するだけです:

return static::$_test;
于 2013-02-07T17:53:47.600 に答える
2

return self::$_testの代わりに使用しreturn static::$_testます。

これにより、が定義され$_testているクラスのフィールドに確実にアクセスできます。returnTest

参照については、 http://www.php.net/manual/en/language.oop5.late-static-bindings.phpを参照してください。

于 2013-02-07T17:59:09.623 に答える