在给ecae管理平台添加功能的时候 由于代码中ecaeapi_api是封装在ecae的 为了方便查看返回结果 做了一个调用的方法
case "ecaeapi":
if (!$_GET['class']) {
echo('no class select!');
return false;
}
if (!$_GET['func']) {
echo('no function select!');
return false;
}
for ($i=0; $i < count($_GET)-4; $i++) {
$arg[] = $_GET['arg'.$i] ? $_GET['arg'.$i] : '';
}
ecaeapi($_GET['class'],$_GET['func'],$arg);
break;
function ecaeapi($class,$func,$arguments){
$obj = kernel::single($class);
switch (count($arguments)) {
case '0':
$return = $obj->$func();
break;
case '1':
$return = $obj->$func($arguments[0]);
break;
case '2':
$return = $obj->$func($arguments[0], $arguments[1]);
break;
case '3':
$return = $obj->$func($arguments[0], $arguments[1], $arguments[2]);
break;
default:
$return = '参数太多了';
break;
}
echo("<pre>");
print_r($return);
}
开始ecaeapi是上面的写法 后来想到call_user_func_array 上面的直接改为
function ecaeapi($class,$func,$arguments){
$obj = kernel::single($class);
$return = call_user_func_array(array($obj,$func), $arguments);
echo("<pre>");
print_r($return);
}
用call_user_func_array函数更简单方便 而且没有参数限制