存储在字符串中的ZEND执行/调用函数

时间:2011-10-27 00:34:37

标签: zend-framework function call

我在调用名称为字符串的函数时遇到问题。

我做了一些帮助,我想在我的phtml文件中回显:

echo $this->EditProfile();
echo $this->ViewProfile();

EditProfile()和ViewProfile()是我创建的View Helpers的名称,我在视图中调用它们。这种方法工作正常。但是,当我想通过存储在数据库中的名称动态调用函数时,我试图以这种方式执行此操作:

从数据库中获取帮助程序的名称并将它们存储到数组中,然后尝试在foreach中显示它们。

foreach ($this->modules as $key => $module)
    {   
echo  $this->$module['name'];
    }

变量

$module['name']

包含一个有效的Helper名称,我希望在phtml文件中调用(使用Zend_debug :: dump()进行检查,并在foeach中只使用echo $ module ['name']并且id正确显示...但是这个回声它没有工作,没有调用View Helper,没有显示任何内容

当我尝试使用eval或call_user_func时,也没有显示任何内容......如何在foreach或其他循环中执行此操作?

1 个答案:

答案 0 :(得分:0)

好吧自己解决了:) 不知道这个解决方案是否正确,但它实际上正在工作;)

而是call_user_func我提到魔法函数__call与call_user_func_array相同

所以我编辑了如下代码

foreach ($this->modules as $key => $module)
{
$this->__call($module['name'],array(null));
}

在这种情况下,数组为null,因为没有参数传递给函数。如果我的助手生病需要参数,将来在这个数组中传递它们。 这个解决方案适合我:)

如果有人有更好的解决方案,请在此发布并分享您的意见;) 问候 Darek