【发布时间】:2014-04-04 21:41:04
【问题描述】:
尝试访问类变量的静态方法时,我在类内部遇到了一个非常奇怪的语法错误。
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 的正确语法是什么?
【问题讨论】:
-
你得到什么错误?
-
模糊猜测:解析器优先级问题,您的错误版本被视为
$this->{factory::get()}。您收到的确切错误消息是什么? -
如果我尝试一下,我会得到
"syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM)",这很清楚但没有解释原因。 -
对不起,实际错误是 FatalErrorException: Parse: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM)