2011-08-01 53 views
1

我想從傭工負荷模型...即時通訊使用eval插入MODELNAME等Zend的加載模型

public function getMod($mName) { 
    // this works but need a dynamic one 
$model = $this->users = new Application_Model_Users(); 

// so i did this: 

     $model = $this->_listsMod = eval ("new Application_Model_$mName();"); 



     return $model; 

,您可以通過調用它:$this->_helper->getmod->getMod('Users')->myuserFunc();

但不工作,其表示致命錯誤:調用一個成員函數myuserFunc()一個非對象

回答

2

更新答案:

您是否嘗試過:

$modelName = 'Application_Model_'.$mName; 
    $model = $this->_lists = new $modelName ; 

你應該看看工廠模式(這實際上是你在這裏做的),例如herehere

如您所知,儘可能避免使用eval。另外,似乎有點奇怪的需要加載這樣的模型 - 你能告訴我們爲什麼你需要像這樣加載它們嗎?

注意:我已在下面的評論中更新了此答案,以便爲將來的問題/答案讀者提供更快的答案。

+0

nope,does not work .. $ model = new'Application_Model _'。$ mName。'()';也不是。 –

+0

什麼是錯誤信息?您是否嘗試過在'Action'中執行類似'$ model = new'Application_Model _'。''''的操作? – ChrisA

+0

nope。錯誤:解析錯誤:語法錯誤,意外T_CONSTANT_ENCAPSED_STRING –