2011-10-27 35 views
0

我在调用一个名称是字符串的函数时遇到了问题。存储在字符串中的ZEND执行/调用函数

我做了,我想在我的PHTML文件呼应这样几个帮手:

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

的EditProfile()和自拍()是我创建的视图助手的名字,我叫他们在视图中。而且这种方法工作正常。但是当我想动态地调用一个名称存储在数据库中的函数即时试图这样做:

即时通讯从数据库中获取助手的名字,并将它们存储到数组中,然后尝试在foreach中显示它们。

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

变量

$module['name'] 

包含助手的,我想在PHTML文件(Zend_debug ::转储(被检查调用)的有效名称,只有回声$模块[“名” ]在foeach和id显示它正确...但这个回声它不工作,并没有调用查看帮助,没有任何显示

当我尝试eval或call_user_func也没有显示太...我怎么能做到这一点在foreach或其他循环?

+0

什么是存储在'$模块[“名”]'?像字符串“EditProfile”或“EditProfile()”?括号是触发视图助手插件机制所必需的。没有它们,它们只会在视图中引用变量,这些变量大概是空的。 –

回答

0

确定解决它自己:) 不知道这是正确的解决方案,但它的实际工作;)

代替call_user_func我提到的神奇功能__call是相同call_user_func_array

所以我编辑这样的代码下面

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

在这种情况下,数组为空导致没有参数传递给函数。如果在我的帮手中,生病需要参数在将来不适合通过它们。 而这个解决方案工作正常,我:)

如果有人有更好的解决办法,请张贴在这里,并提出意见;) 问候 Darek

+0

祝贺解决方案!如果可以,请确保将您的答案标记为“已接受”,以便其他人可以从您的成功中学习。干杯〜 –

相关问题