2011-10-27 1 views
0

이름이 문자열 인 함수를 호출하는 데 문제가 있습니다. 문자열에 저장된 ZEND 실행/호출 함수

나는 몇 내가 이렇게 내 PHTML 파일에 에코 할 헬퍼했다 :

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

EditProfile()와 ViewProfile() 내가 만든보기 도우미의 이름입니다을하고 난 그들에게 전화 드렸습니다 보기에서. 그리고이 방법은 잘 작동합니다. 하지만이 방법으로이 작업을 수행하려고 데이터베이스 메신저에 저장된 이름으로 함수를 호출이 동적으로 할 때 :

메신저 데이터베이스에서 도우미의 이름을 얻고 배열에 저장 한 후 foreach 문에이를 표시하려고합니다.

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

변수

$module['name'] 

그냥 에코 $ 모듈 [ '이름'으로 내가 Zend_debug :: 덤프 (로 확인 PHTML 파일 (에 전화를 걸 도우미의 유효한 이름) 등을 포함 ] foeach 및 id에서 제대로 표시하지만 ...이 작동하지 않는 및 도우미 호출, 아무것도 표시되지 않습니다.

내가 eval 또는 call_user_func 시도 할 때 너무 아무것도 표시됩니다 ... 어떻게이 작업을 수행 할 수 있습니다. foreach 또는 다른 루프에서?

+0

? 문자열''EditProfile'' 또는' 'EditProfile()''과 같은 것? 괄호는 뷰 헬퍼 플러그인 메커니즘을 트리거하는 데 필요합니다. 그것들이 없으면, 뷰 내의 변수들만을 참조 할 것인데, 그것은 아마도 공백 일 것이다. –

답변

0

확인은 나 자신을 해결 :) 제대로 알고있는이 솔루션입니다 해달라고하지만 실제로 작업)

을 나는 마법의 기능 __call이

그래서 내가

아래에 다음과 같은 코드를 편집 call_user_func_array 같은 것을 언급하는 대신 call_user_func
foreach ($this->modules as $key => $module) 
{ 
$this->__call($module['name'],array(null)); 
} 

이 경우 배열은 null이므로 아무 매개 변수도 함수에 전달되지 않습니다. 내 도우미에 매개 변수가 필요하면이 배열에서 나중에 전달해야합니다. 이 솔루션은 나를 위해 잘 작동 그리고 :)

사람이 더 나은 솔루션이 여기에 게시하고 의견을 공유하시기 바랍니다있는 경우) 관련 Darek

`$ 모듈 [ '이름'] '에 저장되어있는 어떤
+0

솔루션에 축하! 할 수있을 때 다른 사람들이 당신의 성공을 통해 배울 수 있도록 귀하의 대답을 '수락'으로 표시하십시오. 건배 ~ –