我想在mysqli的bind_param
周围写一个包装函数。在documentation(OO样式)中,函数签名是bool mysqli_stmt::bind_param ( string $types , mixed &$var1 [, mixed &$... ] )
,所以我想知道我的函数的签名应该是什么以及如何将参数传递给bind_param
。
我知道func_get_args
函数,但这会将参数转换为数组,我不知道by参考值会发生什么。这甚至可能吗?
答案 0 :(得分:1)
好的,正如我第一次评论的那样,你很好地总结了这种情况,然后将手指放在伤口处的伤口处:
这也是2010年4月answer to "PHP mysqli wrapper: passing by reference with __call() and call_user_func_array()"关于同一主题的艺术现状。
所以今年的新功能是使用PHP 5.6(RFC) by-reference capture 的新变量函数现在可以实现。而section中的示例实际上包含了您最有可能寻找的代码:
class MySQL implements DB { public function prepare($query, &...$params) { $stmt = $this->pdo->prepare($query); foreach ($params as $i => &$param) { $stmt->bindParam($i + 1, $param); } return $stmt; } // ... }
在PHP手册中了解有关该功能的更多信息:http://www.php.net/manual/en/functions.arguments.php#functions.variable-arg-list