PHP:在类属性中使用变量类 - 为什么调用静态方法会返回解析错误?
PHP:在类属性中使用变量类 - 为什么调用静态方法会返回解析错误?
自从PHP版本5.3起,我们可以像这样在变量类中调用静态方法:调用静态方法:
class A { public static function foo() { echo 'bar'; } } $myVariableA = A::class; $myVariableA::foo(); //bar
因此,通过下面的示例,我想了解为什么类B可以工作,而类C不能:
class A { public static function foo() { echo 'bar'; } } class B { protected $myVariableA; public function __construct() { $this->myVariableA = A::class; } public function doSomething() { $myVariableA = $this->myVariableA; return $myVariableA::foo(); //bar(无错误) } } class C { protected $myVariableA; public function __construct() { $this->myVariableA = A::class; } public function doSomething() { return $this->myVariableA::foo(); //解析错误 } } $b = new B; $b->doSomething(); $c = new C; $c->doSomething();
请注意,我在这里不是试图解决问题,但我想要确切地了解为什么会发生这种情况(如果可能的话,包括实现细节)。