我有一些数组,其中包含我想在函数中使用的字符串/对象
$args = ['hello', $object];
现在我使用call_user_func从我的第二个类执行静态函数。
call_user_func([Handler::class, 'func']);
此代码抛出错误,因为函数' func'在它的构造函数中需要2个参数,但它是空的 所以我想让它看起来像这样
call_user_func([Handler::class, 'func'], 'hello', $object);
数组$ args可以包含不同数量的字符串/对象。
答案 0 :(得分:2)
您应该使用的功能是call_user_func_array()
http://php.net/manual/en/function.call-user-func-array.php
混合call_user_func_array(可调用$ callback,数组$ param_arr) 使用param_arr中的参数调用第一个参数给出的回调。
所以在你的情况下:
call_user_func_array([Handler::class, 'func'], ['hello', $object]);
hello
是第一个参数,$object
是第二个参数。
这样做的好处是$param_arr
的长度可以变化,因为call_user_func
中的参数必须逐个输入,因此它们是固定长度。这正是您想要的Array $args can be of different amount of strings/objects inside.
因此,只需将$param_arr
替换为您的$args
数组即可。