PHP:在_call中定义并使用call\u user\u func\u数组调用的方法

PHP:在_call中定义并使用call\u user\u func\u数组调用的方法,php,Php,我有一个类似的问题: 我需要调用一个方法定义的宽度调用,但我不知道要传递多少个参数。所以我用这个: call_user_func_array(array($object, $method_name), $arguments); 但它不起作用。 实际上,这是有效的: $object->$method_name(); 但我不知道如何通过另一种方式传递参数,即调用\u user\u func\u数组 我不想这样: $object->$method_name($arguments[0],

我有一个类似的问题:

我需要调用一个方法定义的宽度调用,但我不知道要传递多少个参数。所以我用这个:

call_user_func_array(array($object, $method_name), $arguments);
但它不起作用。 实际上,这是有效的:

$object->$method_name();
但我不知道如何通过另一种方式传递参数,即调用\u user\u func\u数组

我不想这样:

$object->$method_name($arguments[0], $arguments[1], $arguments[2] /*,... until no more args*/);
一个主意?
谢谢

这是完全可能的。我不知道您的代码,但这里有一个快速的测试,我可以确保它正常工作:

class Foo {
    function _bar($arg1, $arg2) {
        print_r(func_get_args());
    }

    function __call($name, $args) {
        call_user_func_array([$this, '_'.$name], $args);
    }
}

$foo = new Foo();
$func = 'bar';

call_user_func_array([$foo, $func], ['1', '2']);

// Array
// (
//     [0] => 1
//     [1] => 2
// )

这试图调用不存在的函数
Foo::bar()
,因此它最终在
Foo::\uu call()
中结束,然后调用
Foo::\u bar()

请告诉我们您是如何定义
\uu call()
方法的,因为它应该可以正常工作。但它实际上不工作,它做了什么,错误,火花,泄漏???我太蠢了。。。这是为了得到一个值。所以实际上它什么也没做。现在对我来说,在我的call\u user\u函数之前放一个return似乎是合乎逻辑的。。。你知道吗?它起作用了!非常感谢你