php - 调用未定义的方法 Closure::query()

标签 php mysql model-view-controller mysqli closures

我有以下闭包

$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);
}

当我执行时出现以下错误 调用未定义的方法 Closure::query()。我怎样才能正确实现以便 $this->connection 实例变量保存 mysqli 连接?

最佳答案

public function __construct($provider) {
    // invoke the closure/provider/factory
    // so that it returns the mysqli instance
    // which then gets assigned to $this->connection
    $this->connection = $provider();
    $sql = 'SELECT * FROM USERS WHERE ID=' ....
}

关于php - 调用未定义的方法 Closure::query(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35458502/

相关文章:

java - 如何在不使用IDE/外部工具的情况下建立Java程序和数据库之间的连接?

c# - ViewBag 没有向 View 发送任何值

Perl Catalyst 和 FastCgi 错误记录问题

PHP - 克隆一个包含对自身的引用的对象?

php - 在mysql中搜索LIKE json对象

php - 前导 0 不显示在 mysql 表结果中

java - Spring,如何通过 header 管理HTTP请求?

php - 发生错误...未选择数据库

PHP版本以及与Mysql 8的兼容性

java - Hibernate uuid生成和mysql uuid函数uuid()