2

phpドキュメントによるとhttp://php.net/manual/en/language.oop5.constants.php

静的として宣言されたプロパティは、インスタンス化されたクラスオブジェクトではアクセスできません

しかし、次の例は、オブジェクトから静的プロパティにアクセスできることを示していません$fooか?

class Foo{
    static $my_static = 'foo';
    function staticValue(){
        return self::$my_static;
    }        
}

$foo = new Foo();
echo $foo::$my_static;
4

1 に答える 1

5

ここでの秘訣は、常にクラスを参照するスコープ解決演算子::を使用していることです。$fooまたは$thisまたはselfを使用するかどうかは関係ありません。

Selfは、現在のレベルを参照するPHPのキーワードですが、オブジェクトで::を使用して、そのオブジェクトのクラスへの参照を取得できます。self ::は、parent ::と同じキーワードのファミリーに属し、self ::をオブジェクトの現在のレベルで何かにアクセスしたいものと考え、parent::を現在のオブジェクトのにあるものにアクセスしたいと考えます。

したがって、クラスで定義されているものにアクセスします。PHPは::演算子を作成しました。静的なクラスの何かが必要な場合は、クラス内でselfを使用するか、クラス外でオブジェクト参照を使用できます。

于 2013-01-15T05:08:19.997 に答える