Php 范围解析运算符和类方法
好吧,我不明白为什么这个代码有效Php 范围解析运算符和类方法,php,class,oop,methods,static,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
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并没有声明为静态的
我认为我只能对静态成员/方法使用::
有什么解释吗?是的,这是可能的。我想知道为什么。但是请注意,PHP将抛出一个
E_STRICT
错误,这对于新代码来说绝对是不可接受的,而它可能发生在遗留代码中。您不应该调用未声明为静态的静态方法。尝试修复旧代码。请参阅刚刚在我的本地主机上运行了代码,但出现错误。所以只要坚持你所知道的。这可能是您的php设置。