在PHP中使用call_user_func_array调用非静态方法

时间:2016-07-19 22:57:04

标签: php

我尝试使用call_user_func_array调用对象的非静态方法,但我不了解如何制定回调。我在网上发现了很多类似的例子,但没有像我遇到的那样。     

class DBCommand {
    private $db; // The DBConnection object

    function __construct() {
        $db = new DBConnection();
    }

    function callMethod($method, $arguments) {
        // This line gives me the error:
        return call_user_func_array(array($this->db, "$method"), $arguments);
    }
}
?>

使用DBConnection方法的名称调用callMethod及其正确的参数为我提供了这个

PHP Warning:  call_user_func_array() expects parameter 1 to be a valid 
callback, first array member is not a valid class name or object

因此,callMethod返回null。

1 个答案:

答案 0 :(得分:5)

使用符号[$objectHandle, "methodName"]动态调用非静态方法:

call_user_func_array([$this,$method], $arguments);

Live demo