范围解析运算符和类方法

时间:2013-06-17 14:31:27

标签: php class oop methods static

好吧,我不知道为什么这段代码会起作用

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并未声明为静态。

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

任何解释

1 个答案:

答案 0 :(得分:6)

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