gpt4 book ai didi

PHP 从类中动态调用方法

转载 作者:可可西里 更新时间:2023-10-31 23:20:27 25 4
gpt4 key购买 nike

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,因为当我添加新方法时,我也必须将它添加到 switch。我想避免这种情况。

问:如何动态调用类中的方法?

我的想法:

if(!function_exists($method)){
$result = 'function not exist!';
}
else {
$result = call_user_func_array($method, $params);
}

最佳答案

好吧,你可以这样做,

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;
}

关于PHP 从类中动态调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23830453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com