根据数组中的对象/字符串填充函数构造函数

时间:2018-03-27 16:46:42

标签: php

我有一些数组,其中包含我想在函数中使用的字符串/对象

$args = ['hello', $object];

现在我使用call_user_func从我的第二个类执行静态函数。

call_user_func([Handler::class, 'func']);

此代码抛出错误,因为函数' func'在它的构造函数中需要2个参数,但它是空的 所以我想让它看起来像这样

call_user_func([Handler::class, 'func'], 'hello', $object);

数组$ args可以包含不同数量的字符串/对象。

1 个答案:

答案 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数组即可。