标签:php
我希望将对象存储为类的属性.然后,我希望能够通过直接引用该属性在该类上调用静态方法.
考虑以下:
class myModel {
public static function all()
{
return 1;
}
}
class myClass {
public $models;
public function __construct()
{
$this->models->myModel = new myModel;
$results = $this->models->myModel::all();
}
}
$result = new myClass;
PHP在$results = $this-> models-> myModel :: all();上失败
如果我通过将class属性分配给局部变量来进行修改,那么事情将按预期进行:
$myModel = $this->models->myModel;
$results = $myModel::all();
我想消除将class属性分配给局部变量的需要.
在PHP 5.3.x(我正在使用的版本)中还是在更高版本中是否可能?
解决方案应易于阅读,并且不应混淆代码的目的.
为了清楚起见,这是对工作代码的极大简化.在我发布的示例代码中,并没有将对象存储在类属性中的好处.
解决方法:
语法将给您的错误是:
Parse error: syntax error, unexpected ‘::’ (T_PAAMAYIM_NEKUDOTAYIM)
但是由于Uniform Variable Syntax RFC,它可以在PHP 7中使用.所有以前的版本都需要中间变量.
标签:php
来源: https://codeday.me/bug/20191013/1908523.html