这是我目前的代码:
public function myfunc( $class_name, $method_name, array $params = [] ) {
$obj = new $class_name();
if ($obj->$method_name()['status']) {
// do stuff
}
}
我目前的代码也适用。现在我需要将$params
数组传递给$method_name()
方法。所以我使用call_user_func_array
PHP函数。这是我的新代码:
public function myfunc( $class_name, $method_name, array $params = [] ) {
$obj = new $class_name();
if (call_user_func_array($obj->$method_name()['status'], $params)) {
// do stuff
}
}
但是在这个版本中,它会抛出这个错误:
call_user_func_array()期望参数1是有效的回调,没有给定的数组或字符串
请告诉我如何解决?
答案 0 :(得分:1)
call_user_func_array()
调用回调(这是一个数组,函数字符串名称),其中参数列表以数组形式给出。你可以做到
call_user_func(array($obj, $method_name), $params)['status']
表达式array($instance, $methodname)
表示php中的回调,即方法$instance->$methodname
。
答案 1 :(得分:0)
在这段代码中,你必须创建$ params数组并初始化它,而不是在函数调用中作为参数传递。见下面的代码:
$params = array();
$params[0]=anyVal;
$params[1]=anyVal;
$params[n]=anyVal;
if (call_user_func_array($obj->$method_name()['status'], $params))
{
// do stuff
}