У меня есть массив строк, и я хочу определить функции с именами, являющимися этими строками. Есть ли способ сделать это в PHP?
$a = array("xxx", "yyy", "zzz");
Как программно определить xxx()
, yyy()
и zzz()
?
Большое спасибо
Если вам действительно нужно было объявить функцию в блоке eval
:
foreach ($a as $functionname) eval(' function '.$functionname.' () { print 123; } ');
Но это приводит к некоторому дополнительному штрафу за время синтаксического разбора за простое объявление функций в файле.
Вы этого не сделаете, это невозможно.
С помощью трюка магического метода вы можете добиться этого на экземпляре объекта (так работает $ obj-> xxx (), см.: __call ), но вы не можете создать глобальную функцию, основанную на имени переменной.
Примечание. Я знаю, что вы можете $ var (), но это не то, что задал ОП.
$a = array("xxx", "yyy", "zzz"); foreach($a as $functionname){ $code = <<< end function $functionname(){ //your logic here for each function } end; eval($code); }
Однако, пожалуйста, не следует, что Eval не рекомендуется использовать, вы должны найти другой подход.