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似乎是合乎逻辑的。。。你知道吗?它起作用了!非常感谢你