如何在PHP中传递变量参数列表


How to pass variable argument list in PHP

我有一个函数总是这样调用:

old_function(sprintf("Some arbitrary data %d, %s, %f'n", $i, $s, $f));

在PHP中是否可以制作一个函数,将这些函数组合为的函数

new_function("Some arbitrary data %d, %s, %f'n", $i, $s, $f);

在new_function的开头,必须解析函数的变量参数列表,并在内部传递给sprintf:

function new_function( /* variable argument list */ )
{
     $string = sprintf( /* variable argument list */ );
     return old_function($string);
}

这在PHP中可能吗?

您可以使用func_get_args()&call_user_func_array()

function new_function()
{
     // get all function arguments
     $args = func_get_args();
     // run the function "sprintf" with the given arguments
     $string = call_user_func_array("sprintf", $args);
     return old_function($string);
}

从PHP 5.6开始,您可以尝试通过...运算符使用Variadic函数。这一新功能使本机支持将可变长度的参数列表传递给任何函数。

试试这样的东西:

public function new_function(...$params) {
    $string = call_user_func_array("sprintf", $params);
    return old_function($string);
}

请查看func_get_args()方法。它可以检索可变长度的参数。