范围解析运算符和类方法

dof*_*nco 3 php oop methods static class

好吧,我不知道为什么这段代码有效

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
Run Code Online (Sandbox Code Playgroud)

我可以通过创建MyObject类的新实例或静态方法来调用myBaseMethod().但myBaseMethod未声明为静态.

我以为我可以使用::仅用于静态成员/方法.

任何解释都会

hek*_*mgl 6

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