将函数的args直接传递给另一个函数

时间:2009-09-22 16:28:05

标签: php

在PHP中,有没有办法将函数的参数直接发送到另一个函数而不必逐个指定它们?有没有办法扩展func_get_arg(),以便其他函数接收单个参数而不只是单个数组?

我想将foo()的论据直接发送到bar(),如此:

function foo($arg1, $arg2, $arg3)
{
  $args = expand_args(func_get_arg());
  bar($args);
}

2 个答案:

答案 0 :(得分:5)

function foo($arg1, $arg2, $arg3)
{
    $args = func_get_arg();

    call_user_func_array("bar",$args);

}

答案 1 :(得分:0)

如果要在属于完全独立类的实例的函数上调用它,可以通过将第一个arg作为数组传递给call_user_func_array来完成。

在此示例中,函数foo接受任何参数,并将它们直接传递到$bar->baz->bob(),并返回结果。

public function foo(/* example arguments */)
{
    return call_user_func_array
    (
        array($bar->baz, 'bob'),
        func_get_args()
    );
}