(向下滚动以获得结论。)
我正在尝试围绕mysqli_stmt::bind_param
和mysqli_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 文件中。