2011-04-01 80 views
3

如何創建單行我的類對象從一個變量:從變量名創建對象

$strClassName = 'CMSUsers'; 
$strModelName = $strClassName.'Model'; 
$strModelObj = new $strModelName(); 

上面的代碼創建成功我CMSUsersModel類對象,但是當我嘗試:

$strClassName = 'CMSUsers'; 
$strModelObj = new $strClassName.'Model'(); 

它彈出錯誤....說:

Parse error: syntax error, unexpected '(' in 
+0

爲什麼需要這個'優化'? – biakaveron 2011-04-01 09:32:50

+0

你不能在對象實例化時進行字符串連接。 – Shameer 2011-04-01 09:55:24

+0

[從變量實例化新對象]的可能重複(http://stackoverflow.com/questions/5964113/instantiate-new-object-from-variable) – 2015-07-09 18:38:11

回答

12

在創建對象時不能使用字符串連接。

如果使用

class aa{} 

$str = 'a'; 
$a = new $str.'a'; // Fatal error : class a not found 



class aa{} 

$str = 'a'; 
$a = new $str.$str; // Fatal error : class a not found 

所以你應該使用

$strModelName = $strClassName.'Model'; 
$strModelObj = new $strModelName(); 
1

我注意到肯定,因爲我不是最新的帶班和PHP,但我認爲$strModelName是類定義,因此我認爲你必須使用一兩行或寫這樣的東西:

$strModelName = 'CMSUsers'.'Model'; $strModelObj = new $strModelName();