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 没有声明为静态的。

我认为我只能将 :: 用于静态成员/方法。

任何解释请

4

1 回答 1

6

是的,这是可能的。我想知道为什么。但请注意,PHP 会抛出一个E_STRICT错误,这对于新代码绝对不可接受,而它可能发生在旧代码中。您不应该调用未声明为静态的静态方法。尝试修复遗留代码。

于 2013-06-17T14:33:40.200 回答