2011-10-27 56 views
0

名前が文字列である関数を呼び出す際に問題があります。文字列に格納されたZEND実行/呼び出し関数

私は、私はこのような私のPHTMLファイルにエコーしたいいくつかのヘルパー製:

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

EditProfile()とViewProfile()は私が作成したと私はそれらを呼んでいるビューヘルパーの名前ですビューで。そして、このメソッドは正常に動作しています。しかし、私はこのようにデータベースimに格納された名前で関数を動的に呼び出そうとします:

データベースからヘルパーの名前を取得し、

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

変数

$module['name'] 

がZend_debugでチェック(私はPHTMLファイルで呼び出すしたいヘルパーの有効な名前が含まれています::(ダンプ)とちょうどエコー$モジュールと[ 'name' を] foeachとidで正しく表示されています...しかし、これはうまく表示されず、表示ヘルパーを呼び出さずに何も表示されません。

私はevalまたはcall_user_funcを試しても何も表示されません...どうすればいいですかforeachや他のループで?

+0

?文字列 ''EditProfile''や' 'EditProfile()''のようなもの?ビューヘルパープラグインのメカニズムを起動するには、かっこが必要です。それらがなければ、ビュー内の変数のみを参照します。おそらく空です。 –

答えて

0

OK]をクリックして、それを自分で解決:) は知らない正しく、このソリューションであるが、そのは実際に働い;)

私は魔法の関数__callがcall_user_func_array

と同じであるので、私は

以下のようなコードを編集したことに言及した代わりにcall_user_func
foreach ($this->modules as $key => $module) 
{ 
$this->__call($module['name'],array(null)); 
} 

この場合、配列はnullです。パラメータは機能に渡されません。私のヘルパーに病気が残っていれば、将来この配列にパラメータを渡す必要があります。 そして、このソリューションは、私のために正常に動作します:)

誰かがよりよい解決策を持っている場合は、ここでそれを投稿し、あなたの意見を共有してください; `$モジュール[「名前」]`に格納されてどのような) に関して Darek

+0

溶液におめでとう!あなたができるときは、他の人があなたの成功から学ぶかもしれないようにあなたの答えを「受け入れられた」とマークしてください。乾杯〜 –

関連する問題