這是我的靜態代碼 -$tireBrick = new DataObject\Objectbrick\Data\classname($object);我需要的是,我需要將“類名”更改為變量(動態加載類)`$tireBrick = new DataObject\Objectbrick\Data\$brickName($object);` //But php doesn't allow to use this syntax.如您所見,它將動態分配“ $brickName($object)”誰能幫我動態加載這個類?謝謝塔蘭加。
3 回答

瀟瀟雨雨
TA貢獻1833條經驗 獲得超4個贊
用于::class獲取完整的類名:
$myClass = classname::class; // DataObject\Objectbrick\Data\classname
$tireBrick = new $myClass($object);

慕森王
TA貢獻1777條經驗 獲得超3個贊
$tireBrick = "new DataObject\\Objectbrick\\Data\\".$brickName($object);
或者嘗試了解命名空間以縮短它

絕地無雙
TA貢獻1946條經驗 獲得超4個贊
我有一堆拼寫檢查類解決了這個問題。它看起來像這樣:
$baseClass = 'SpellChecker';
$activeChecker = $activeChecker ? 'Hun' : Yii::$app->params['spellChecker']['active'];
$spellCheckerClass = "common\\models\\spellchecker\\$activeChecker$baseClass";
然后你可以像這樣使用它:
/** @var SpellChecker $spellChecker */
$spellChecker = new $spellCheckerClass();
現在整個事情的本質是如果你使用類似的類是最好的,所以你可以使用這些函數而不用擔心如果函數不存在它們會使應用程序崩潰。為此,您可以實現一個觀察者模型,在其中定義要在觀察者類中使用的每個函數,然后創建子類,在其中覆蓋觀察者類的功能。
- 3 回答
- 0 關注
- 222 瀏覽
添加回答
舉報
0/150
提交
取消