I have an array of strings and I want to define functions with names being these strings. Is there a way to do that in PHP?
$a = array("xxx", "yyy", "zzz");
H开发者_如何学Pythonow do I programmatically define xxx()
, yyy()
, and zzz()
?
Many thanks
If you really had to you could declare the function within an eval
block:
foreach ($a as $functionname)
eval('
function '.$functionname.' () {
print 123;
}
');
But that incurs some extra parsing time speed penalty over just declaring the functions in a file.
You don't, it's not possible.
With a magic method trick you can achieve this on an instance object (so $obj->xxx() works, see: __call) but you cannot create a global function based on a variable name.
Note: I am aware that you can $var(), but that's not what the OP asked.
$a = array("xxx", "yyy", "zzz");
foreach($a as $functionname){
$code = <<< end
function $functionname(){
//your logic here for each function
}
end;
eval($code);
}
However please not that Eval is not advisable to be used, you should find some other approach.
精彩评论