我有一个字符串数组,我想定义名称为这些字符串的函数。有没有办法在PHP中做到这一点?
$a = array("xxx", "yyy", "zzz");
如何以编程方式定义xxx()
,yyy()
和zzz()
?
非常感谢
答案 0 :(得分:8)
如果你真的需要,可以在eval
块内声明该功能:
foreach ($a as $functionname)
eval('
function '.$functionname.' () {
print 123;
}
');
但是,仅仅在声明文件中的函数时会产生一些额外的解析时间速度惩罚。
答案 1 :(得分:2)
你没有,这是不可能的。
使用魔术方法技巧,您可以在实例对象上实现此功能(因此$ obj-> xxx()可以工作,请参阅:__call)但您无法基于变量名创建全局函数。
注意:我知道你可以$ var(),但这不是OP所要求的。
答案 2 :(得分:1)
$a = array("xxx", "yyy", "zzz");
foreach($a as $functionname){
$code = <<< end
function $functionname(){
//your logic here for each function
}
end;
eval($code);
}
但请注意,不建议使用Eval,你应该找到其他方法。