PHPではスタティックメソッドにアロー演算子でアクセスできる

PHPってこういうのできちゃうんですね。
class Klass
{
    public static function staticFoo()
    {
        return "I am static method\n";
    }
}

$obj = new Klass;
echo $obj->staticFoo();
てっきり文法エラーになると思っていたのですが、エラーにはならないようです。

マニュアルを見ると、
static なプロパティは、インスタンス化されたクラスオブジェクトから アクセスすることはできません (static なメソッドにはアクセスできます)。

http://www.php.net/manual/ja/language.oop5.static.php
表現がすごいわかりにくいのですが、つまり「できる」ということです。

できるけどやらない方がいいでしょうね。
意図がわかりにくくなるので。
カテゴリ: