【发布时间】:2016-05-29 06:19:28
【问题描述】:
我有以下闭包
$dbhProvider = function (){
//Create connection.
$instance = new \mysqli('localhost', USERNAME, PASSWORD, 'BLOG');
return $instance;
};
我有以下实现
$mapper = new UserMapper($dbhProvider);
UserMapper 的 __constructor 看起来像这样
public function __construct($connection){
$this->connection = $connection;
$sql = 'SELECT * FROM USERS WHERE ID=' . $this->user->getId();
$result = $this->connection->query($sql);
}
当我执行时出现以下错误
Call to undefined method Closure::query()。我怎样才能正确实现以使$this->connection 实例变量保持mysqli 连接?
【问题讨论】:
-
你用的是哪个版本的php? Closure::call 需要 php 版本 >= 7。
-
和两个旁注:a)代码 sn-p 没有说明为什么需要 Closure:call() b)您没有将连接资源分配给 $this->connection 而是供应商/工厂;所以命名是......次优。
-
我使用 php 5.5.9。对于您的第一个注释,请查看我的更新。对于您的第二个问题,我如何使用此实现来评估连接?
-
标题已编辑。调用()->查询()
标签: php mysql model-view-controller mysqli closures