返回在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