返回在Laravel(4 & 5)动态的类名的情况下,我试图使用动态类名,然后直接调用它们,但在接收一个致命的错误,如果没有第一它们存储在一个本地字符串变量。Laravel错误使用方法
假设我有一个基本类:
class SimpleModel {
private $modelName;
function __construct($id) {
$this->modelName = AnotherModel::getName($id);
}
}
中的方法,我可以很容易做到
$modelName = $this->modelName;
$modelName::find(1);
,但我得到一个致命的错误尝试以下时:
$this->modelName::find(1);
这触发一个Symfony\Component\Debug\Exception\FatalErrorException
与
syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM)
基本上T_PAAMAYIM_NEKUDOTAYIM
是从::
符号生成的语法错误。
不能完成我的周围为什么Laravel(或PHP一般)使用局部变量(在方法中),而不是一类变量时,可以实现动态的类名头。
我也试过把它在一个seprate方法getModelName()
方法,但得到同样的错误。
$this->getModelName()::find(1);
每次(new $this->modelName
)Instanciating一个新的类不是一个很好的解决方案。
我一直在寻找到使用PHP的Reflection
但不知道如何做才不至于每次instanciating一个新的类。 因为它在使用本地字符串时正在工作,所以看起来Reflection
可能是一个过度杀手。
感谢您解释这一点。 – Yani