ZEND выполнить / вызвать функцию, хранящуюся в строке - PullRequest
0 голосов
/ 27 октября 2011

У меня есть проблема с вызовом функции, имя которой является строкой.

Я сделал несколько помощников, которых я хочу отразить в моем phtml-файле следующим образом:

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

EditProfile() и ViewProfile () - это имена помощников вида, которые я создал, и я вызываю их в поле зрения.И этот метод работает нормально.Но когда я хочу динамически вызывать функцию по имени, хранящемуся в базе данных, я пытаюсь сделать это следующим образом:

я получаю имена помощников из базы данных и сохраняю их в массив, а затем пытаюсь отобразить их в foreach.

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

переменная

$module['name']

содержит действительное имя помощника, которое я хочу вызвать в файле phtml (проверяется с помощью Zend_debug :: dump () и только с модулем echo $['name'] в foeach и id отображают его правильно ... но это эхо, оно не работает и не вызывает помощника просмотра, ничего не отображается

, когда я пытаюсь eval или call_user_func, тоже тоже ничего не отображается ..Как я могу сделать это в foreach или другом цикле?

1 Ответ

0 голосов
/ 27 октября 2011

ок решил сам :) не знаю, правильно ли это решение, но оно действительно работает;)

вместо call_user_func я упомянул, что магическая функция __call такая же, как call_user_func_array

поэтому я отредактировал код, подобный приведенному ниже

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

в этом случае массив равен нулю, потому что никакие параметры не передаются в функцию. Если в моем помощнике плохо нужны параметры, я буду передавать их в этот массив в будущем. И это решение прекрасно работает для меня:)

Если у кого-то есть лучшее решение, пожалуйста, опубликуйте его здесь и поделитесь своим мнением;) С уважением Дарек

...