我有一个接受可变数量参数的函数,我必须通过引用将它们传递给另一个函数。
如
function my_function($arg0, $arg1, $arg2, ...)
{
my_other_function(&$arg0, &$arg1, &$arg2, ...);
}
这样当我通过引用传递事物时my_function
,my_other_function
也会通过引用获取它们。
有没有办法做到这一点?
我有一个接受可变数量参数的函数,我必须通过引用将它们传递给另一个函数。
如
function my_function($arg0, $arg1, $arg2, ...)
{
my_other_function(&$arg0, &$arg1, &$arg2, ...);
}
这样当我通过引用传递事物时my_function
,my_other_function
也会通过引用获取它们。
有没有办法做到这一点?
我想知道你为什么需要这个。一般来说,PHP 中的引用很糟糕。
如果你真的想这样做,唯一正确的方法(忽略调用时传递引用黑客,无论如何它不再适用于 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
例如,文档不适用于引用。
而是利用该建议通过数组参数传递所有引用。这样可行。
function my_function(array $args)
{
my_other_function($args);
}