在尝试访问类变量的静态方法时,我在类中有一个非常奇怪的语法错误。
class VendorImport {
//$factory is an instance of another class with a static method get()
protected $factory;
public function getInstance() {
//method 1 works
$factory = $this->factory;
return $factory::get();
//method 2 throws a syntax error
return $this->factory::get();
}
}
方法2的正确语法是什么?
答案 0 :(得分:2)
只需使用常规语法来调用非静态方法 - 它也适用于静态方法:
// instead of `return $this->factory::get();`
return $this->factory->get();
Demo。但是有一个缺点:现在在这里调用静态方法并不明显。但话说回来,人们不能在同一个类中以相同的名称定义两个方法 - 静态和非静态。