我需要从$_GET['url']
变量自动获取参数。所以我想我会使用eval()
函数来创建它。
当我听说它是多么安全时,我开始寻找另一个解决方案,我找到了一个名为call_user_func()
的功能,但我真的不知道如何使用它。
这是正确运行的代码,但我不想再使用它了。你能告诉我如何使它与call_user_func()
一起使用吗?
$execute = '$controller->' . "$url[1](";
for($i=2; $i<count($url); $i++){
$execute .= "'" . $url[$i] . "'";
if($i<count($url)-1){
$execute .= ", ";
}
}
$execute .= ');';
eval($execute);
答案 0 :(得分:0)
您可能希望改为使用call_user_func_array:
if (method_exists($controller, $url[1])) {
call_user_func_array(array($controller, $url[1]), array_splice($url, -2));
}
基本检查方法是否存在,如果是,则使用参数列表调用它。这基本上就是这样做的:
$controller->{$url[1]}($url[2], $url[3], $url[4], ..);
如果您没有要调用的参数,或者您要调用的参数位于1个数组变量中, call_user_func是理想的,例如function test (array $arguments)
。