PHP:使用变量名定义函数

时间:2011-09-07 17:17:00

标签: php

我有一个字符串数组,我想定义名称为这些字符串的函数。有没有办法在PHP中做到这一点?

$a = array("xxx", "yyy", "zzz");

如何以编程方式定义xxx()yyy()zzz()

非常感谢

3 个答案:

答案 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,你应该找到其他方法。