class Test {
function index($method, $params) {
if (!method_exists($this, $method)) {
$result = 'method does not exist!';
}
else {
switch ($method) {
case 'add':
$result = $this->add($params[0], $params[1], $params[2]);
break;
case 'sub':
$result = $this->sub($params[0], $params[1]);
break;
default:
$result = 'no method selected!';
break;
}
}
return $result;
}
public function add($n1, $n2, $n3) {
return $n1 + $n2;
}
public function sub($n1, $n2) {
return $n1 - $n2;
}
}
如何以其他方式调用方法。我不想使用switch,因为当我添加新方法时,我必须将它添加到切换中。我想避免这种情况。
我的想法:
if(!function_exists($method)){
$result = 'function not exist!';
}
else {
$result = call_user_func_array($method, $params);
}
答案 0 :(得分:1)
嗯,我错了......
您应该用以下代码替换开关:
call_user_func_array(array($this, $method), $params);
答案 1 :(得分:1)
嗯,你可以这样做,
function index($method, $params) {
if (!method_exists($this, $method)) {
$result = 'method does not exist!';
} else {
$result = call_user_func_array(array($this, $method), $params);
}
}
return $result;
}