好吧,我不知道为什么这段代码会起作用
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并未声明为静态。
我认为我只能使用::静态成员/方法。
任何解释
答案 0 :(得分:6)
是的,这是可能的。我想知道为什么。但请注意,PHP会抛出E_STRICT
错误,这对于新代码来说肯定是不可接受的,而遗留代码中可能会发生错误。您不应该调用未声明为static的方法static。尝试修复遗留代码。