PHP:用变量名定义函数



我有一个字符串数组,我想用这些字符串的名称来定义函数。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是不可取的,你应该找到其他的方法

最新更新