3

このコードが機能する理由がわかりません

class MyObject  {
    public function myBaseMethod()
    {
        echo 'I\'m declared in' . __CLASS__;
    }

}

$instance = new MyObject();
$instance->myBaseMethod();
MyObject::myBaseMethod();

 // Output
I'm declared inMyObject
I'm declared inMyObject

MyObject クラスの新しいインスタンスを作成するか、静的メソッドとして myBaseMethod() を呼び出すことができます。しかし、myBaseMethod は static として宣言されていません。

:: は静的メンバー/メソッドにのみ使用できると思いました。

説明をお願いします

4

1 に答える 1

6

はい、可能です。理由を知りたいです。ただし、PHP はE_STRICT、レガシー コードでは発生する可能性がありますが、新しいコードでは絶対に受け入れられないエラーをスローすることに注意してください。static として宣言されていないメソッド static を呼び出すべきではありません。レガシ コードの修正を試みます。

于 2013-06-17T14:33:40.200 に答える