我想動態創建對象。現在,我手動創建他們這樣我可以動態設置新的對象名稱
$obj1 = new Prefix_Myobj();
$obj2 = new Prefix_Other();
$obj3 = new Prefix_Another();
如何設置Prefix_
動態後的部分?我嘗試過但不起作用
$name = 'Myobj';
$obj1 = new Prefix_{$name}();
我想動態創建對象。現在,我手動創建他們這樣我可以動態設置新的對象名稱
$obj1 = new Prefix_Myobj();
$obj2 = new Prefix_Other();
$obj3 = new Prefix_Another();
如何設置Prefix_
動態後的部分?我嘗試過但不起作用
$name = 'Myobj';
$obj1 = new Prefix_{$name}();
您需要創建一個指定整個類名的字符串。
$name = 'Myobj';
$classname = 'Prefix_'.$name;
$obj1 = new $classname();
但是,它可能是更好的設計,建立一個類的註冊表類,而不是像這樣即時生成類名。
爲什麼你需要這個?也許你的問題有更好的解決方案;多重或依賴注入等...
重要的是要說,如果你的類是在一個特定的命名空間,你需要通知完整的路徑。例如:
namespace my\path\app;
class MyClass {
$name = 'Myobj';
$classname = 'my\path\app\Prefix_' . $name;
$obj1 = new $classname();
}
我太生疏了,無法提供完整的答案。雖然有變量變量和`$$`運算符 – Earlz 2011-02-07 19:39:27
我刪除了我的答案。很好,彼得。這是動態類型規範,而不是動態對象命名。我正在讀這個非常錯誤的。 – Andy 2011-02-07 21:01:47