2011-10-27 55 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

祝賀解決方案!如果可以,請確保將您的答案標記爲「已接受」,以便其他人可以從您的成功中學習。乾杯〜 –

相關問題