如何将数组传递给方法?

时间:2016-12-13 07:28:31

标签: 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_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是有效的回调,没有给定的数组或字符串

请告诉我如何解决?

2 个答案:

答案 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
 }