如何在bind_params周围编写包装器?

时间:2014-06-22 07:47:17

标签: php mysqli

我想在mysqli的bind_param周围写一个包装函数。在documentation(OO样式)中,函数签名是bool mysqli_stmt::bind_param ( string $types , mixed &$var1 [, mixed &$... ] ),所以我想知道我的函数的签名应该是什么以及如何将参数传递给bind_param

我知道func_get_args函数,但这会将参数转换为数组,我不知道by参考值会发生什么。这甚至可能吗?

1 个答案:

答案 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