我正在用 PHP 编写一个结构,其中解析器确定动态调用哪个函数,有点像这样:
// The definition of what to call
$function_call_spec = array( "prototype" => "myFunction",
"parameters" => array( "first_par" => "Hello",
"second_par" => "World"));
// Dispatch
$funcPrototype = $function_call_spec["prototype"];
$funcPrototype(); // Here we call function 'myFunction'.
这一切都很好,花花公子。但现在是下一步,传递参数,我真的不知道这是否可能是我想要的方式。它永远不会让我感到惊讶,但是这些天脚本语言可以做什么,所以这里是:
可以像这样将参数传递给函数:
// Here we call function 'myFunction' with the array of parameters.
$funcPrototype( $function_call_spec["parameters"] );
但是,我想用明确的参数等正确声明“myFunction”:
function myFunction( $first_par, $second_par )
{
}
接下来的问题是 - 有没有办法简单地通过循环参数数组来动态地将参数传递给函数?
为了澄清,我不想这样做:
$funcPrototype( $function_call_spec["parameters"]["first_par"],
$function_call_spec["parameters"]["second_par"] );
因为这需要我的代码静态地了解有关 myFunction 的详细信息,这与整个想法背道而驰。
相反,我想以某种方式这样做:
// Special magic PHP function which can be used for invoking functions dynamically
InvokeFunction( $funcPrototype, $function_call_spec["parameters"] );
然后导致调用 myFunction 并将数组中的所有参数传递给原型中的每个单独的参数变量。
欢迎任何意见。
问候。
/R
PS:这篇文章中的所有代码都没有经过拼写等测试。