我有一个函数总是这样调用:
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()方法。它可以检索可变长度的参数。