我有一个函数,它接受可变数量的参数,我必须通过引用将它们传递给另一个函数。
如
function my_function($arg0, $arg1, $arg2, ...)
{
my_other_function(&$arg0, &$arg1, &$arg2, ...);
}
所以当我通过引用传递给my_function
时,my_other_function
也通过引用获得它们。
有办法做到这一点吗?
我想知道你为什么需要这个。一般来说,PHP中的引用是不好的。
如果你真的想这样做,唯一正确的方法(忽略ref hacks传递的调用时间,这无论如何都不能再与PHP 5.4一起使用)是使用一个数组来包装参数:
function myfunc(array $data) {
$data[0] += 42;
/* ... */
}
$var = 0;
myfunc(array(&$var /*, ... */));
echo $var; // prints 42
为了传递给另一个函数,您可以使用call_user_func_array()
从技术上讲,您没有这样做:
function my_function($arg0, $arg1, $arg2, ...)
{
my_other_function(&$arg0, &$arg1, &$arg2, ...);
}
但是这个:
function my_function(&$arg0, &$arg1, &$arg2, ...)
{
my_other_function($arg0, $arg1, $arg2, ...);
}
然而,正如@johannes已经写过的那样,对于PHP中引用的可变数量的参数没有很好的支持(谁知道得更好)。例如,func_get_args
Docs不适用于引用。
相反,使用该建议通过数组参数传递所有引用。这很管用。
function my_function(array $args)
{
my_other_function($args);
}