25

$thisメソッドが静的コンテキストで呼び出された場合は変数が使用できないことは理解していますが、アプリケーションコンポーネントを相互に分離するために、インスタンスから静的メソッドを呼び出すのが理にかなっていると思いました。例えば:

class MyExample{
    private static $_data = array();
    public static function setData($key, $value){
        self::$_data[$key] = $value;
    }
    // other non-static methods, using self::$_data
}

// to decouple, another class or something has been passed an instance of MyExample
// rather than calling MyExample::setData() explicitly
// however, this data is now accessible by other instances
$example->setData('some', 'data');

この種の機能を廃止する計画はありますか、それとも今後のサポートを期待する権利がありますか?私error_reporting(-1)は非常に厳格な開発環境を確保するために協力しており、現時点では問題はありません(PHP 5.3.6)が、その逆がサポートされなくなることを認識しています。つまり、インスタンスメソッドは静的に呼び出されます。

4

1 に答える 1

38

PHPのドキュメントから:

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

ですから、これからも長く前向きにサポートしていくと思います。

于 2011-11-02T16:30:33.367 に答える