编程语言
首页 > 编程语言> > 如何在PHP中代理varargs函数

如何在PHP中代理varargs函数

作者:互联网

我想“代理”一个varargs函数(有点像快捷方式):

/** The PROXY function */
function proxy_to_foo(/*varargs*/)
{
    real_foo(func_get_args());
}

/** The real function */
function real_foo(/*varargs*/)
{
    print_r(func_get_args());
}

// Now I call it:
proxy_to_foo(1, 2, 3);

但我明白了(很明显):

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

)

鉴于此目的是:

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

如何解决?一些怪异的反射魔术?

解决方法:

使用call_user_func_array:

/** The PROXY function */
function proxy_to_foo(/*varargs*/)
{
    call_user_func_array('real_foo', func_get_args());
}

如果您的php是5.6及更高版本,请使用可变参数函数参数:

function proxy_to_foo(...$args) 
{
    real_foo(...$args);
}

function real_foo(...$args)
{
    print_r($args);
}

标签:variadic-functions,php,function
来源: https://codeday.me/bug/20191029/1957457.html