根据PHP手册的说明
从PHP 7.0.0开始,静态调用非静态方法已经被普遍弃用(即使从兼容的上下文中调用)。
验证这一说法-
我在类外部调用了一个非静态方法,然后就会产生错误。
class A{
public function foo(){
echo "testing<br/>";
}
}
A::foo();
已弃用:不应静态调用 A::foo() 方法
但是当我在类内部调用一个非静态方法时,它不会生成 Deprecated error
class A{
public function foo(){
echo "testing<br/>";
}
public function Display(){
A::foo(); //calling a Non-static method inside statically
self::foo(); //calling a Non-static method inside statically
}
}
$obj=new A();
$obj->Display();
只有在从类外静态调用时才会被弃用吗?