我希望将对象存储为类的属性。然后我希望能够通过直接引用该属性来调用该类的静态方法。
考虑以下:
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();
如果我通过将类属性分配给局部变量来修改它,事情就会按预期工作:
$myModel = $this->models->myModel;
$results = $myModel::all();
我想消除将类属性分配给局部变量的需要。
这在 PHP 5.3.x(我正在使用的版本)或更高版本中可能吗?
解决方案应该是可读的,并且代码的用途不应该被混淆。
为了清楚起见,这是工作代码的极大简化。在我发布的示例代码中,将对象存储在类属性中的好处并不明显。
语法会给你的错误是:
解析错误:语法错误,意外的“::”(T_PAAMAYIM_NEKUDOTAYIM)
然而它可以在 PHP 7 中工作,这要归功于统一变量语法 RFC https://wiki.php.net/rfc/uniform_variable_syntax。所有以前的版本都需要中间变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)