我有一个字符串数组,我想用这些字符串的名称来定义函数。PHP中有办法做到吗?
$a = array("xxx", "yyy", "zzz");
如何以编程方式定义xxx()
, yyy()
和zzz()
?
多谢
如果您确实需要,您可以在eval
块中声明该函数:
foreach ($a as $functionname)
eval('
function '.$functionname.' () {
print 123;
}
');
但是,与在文件中声明函数相比,这会导致一些额外的解析时间和速度损失。
你不知道,那是不可能的。
使用一个神奇的方法技巧,你可以在实例对象上实现这一点(所以$obj->xxx()可以工作,参见:__call),但你不能基于变量名创建全局函数。
注意:我知道你可以$var(),但这不是OP要求的。
$a = array("xxx", "yyy", "zzz");
foreach($a as $functionname){
$code = <<< end
function $functionname(){
//your logic here for each function
}
end;
eval($code);
}
但是请注意Eval是不可取的,你应该找到其他的方法