定义一个接受任意数量引用的函数的语法是什么?

时间:2013-01-31 16:53:57

标签: php function syntax mysqli

  

可能重复:
  PHP function with unlimited number of parameters

原始问题:

(向下滚动以获得结论。)

我正在尝试围绕mysqli_stmt::bind_parammysqli_stmt::bind_result创建一个简单的包装器。 基本上,调用函数,并返回有关收到的任何错误的一些信息,所以我不必一次又一次地重写这几行。

由于这两个mysqli函数都将其参数作为引用而不是副本,因此我需要让我的函数将其参数作为引用。 (如果我绑定副本而不是引用,那么每次调用mysqli_stmt::execute时,它也会强制我重新绑定。)

所以,理想情况下,我希望能够定义一个带有任意数量引用的函数,比如mysqli函数本身就是这样:

public function foo(&$var1, &$var2, ...)
{
    ...
}

如果不这样做,我需要定义一个带有引用数组的函数。 我知道参考的语法如上所示。 是否有引用数组的语法,

public function foo($var[&$i])
{
    ...
}
像这样?

未来人们尝试相同事情的结论/信息:

基本上,你不能定义一个带有任意数量参数的函数,这些参数是引用的。 从答案,评论和其他问题PHP function with unlimited number of parameters来看,这看起来几乎是不可能完成的任务。

一个技术上有效的廉价黑客,就是定义一个像这样的函数:

function foo(&$arg1, &$arg2 = null, &$arg3 = null, ...)
{
    echo $arg1;
    if ($arg2 != null)
        echo br() . $arg2;

    ...

    return 0;
}

基本上,定义一个函数take,比如说一百个参数,通过引用传递,除了第一个默认为null之外的所有参数。 然后,您可以使用任意数量的参数调用它,所有参数都通过引用传递,从1-100开始。 诀窍是你不想自己编码这个怪物;制作一个脚本来生成这个函数,并将其粘贴在自己的 my-horribly-long-function.php 文件中。

0 个答案:

没有答案