我有一个总是这样调用的函数:
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中使用?
答案 0 :(得分:3)
您可以使用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);
}
答案 1 :(得分:2)
从PHP 5.6起,您可以尝试通过...
运算符使用Variadic Functions。此新功能支持将可变长度参数列表传递给任何函数的本机支持。
尝试这样的事情:
public function new_function(...$params) {
$string = call_user_func_array("sprintf", $params);
return old_function($string);
}
答案 2 :(得分:0)
请查看func_get_args()方法。哪个可以检索变长参数。