在助手中使用eval加载模型

时间:2011-08-01 14:15:35

标签: zend-framework

我想从帮助者加载模型...我使用eval来插入模型名称等。

 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()

1 个答案:

答案 0 :(得分:2)

更新回答:

你试过了吗?

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

你应该看一下工厂模式(这实际上就是你在这里做的),例如herehere

您可能知道,如果可能,最好避免使用eval。此外,需要加载这样的模型似乎有点奇怪 - 你能告诉我们为什么你需要像这样加载它们吗?

注意:我在下面的评论后更新了这个答案,以便更快地为将来的问题/答案的读者提供答案。