Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将数组传递给方法?_Php_Arrays_Function_Oop_Parameter Passing - Fatal编程技术网

Php 如何将数组传递给方法?

Php 如何将数组传递给方法?,php,arrays,function,oop,parameter-passing,Php,Arrays,Function,Oop,Parameter Passing,这是我目前的代码: public function myfunc( $class_name, $method_name, array $params = [] ) { $obj = new $class_name(); if ($obj->$method_name()['status']) { // do stuff } } 我当前的代码也可以工作。现在我需要将$params数组传递给$method\u name()方法。所以我使用了call\u

这是我目前的代码:

public function myfunc( $class_name, $method_name, array $params = [] ) {
    $obj = new $class_name();
    if ($obj->$method_name()['status']) {
        // do stuff
    }
}
我当前的代码也可以工作。现在我需要将
$params
数组传递给
$method\u name()
方法。所以我使用了
call\u user\u func\u数组
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\u user\u func\u array()要求参数1为有效回调,不提供数组或字符串

您能告诉我如何修复它吗?

call\u user\u func\u array()
调用回调函数(数组,函数字符串名称),其中参数列表作为数组给出。你能行

call_user_func(array($obj, $method_name), $params)['status']

表达式
array($instance,$methodname)
是php中回调的表示形式,即方法
$instance->$methodname

在这段代码中,您必须创建$params数组并初始化它,然后在函数调用中作为参数传递。见以下代码:

 $params = array();
 $params[0]=anyVal;
 $params[1]=anyVal;
 $params[n]=anyVal;

 if (call_user_func_array($obj->$method_name()['status'], $params))
 {
    // do stuff
 }
不行。。它抛出对未定义函数方法的
调用\u name()