我应该在哪里存储PDO连接?

时间:2013-11-29 04:30:07

标签: php

我有点困惑:单身人士很糟糕,全球化最差。那么在不同的类之间共享对象(例如PDO连接)的最佳实践是什么?

我希望HTML模板类,ACL类和其他任何东西使用相同的数据库连接。

我知道新的趋势是使用DI,但这是使同一PDO连接全局的最佳做法?也许使用注册表?或者将其设置为静态var?

编辑: 这个解决方案怎么样?

class Connection {

    protected static $instance;

    static function init(\PDO $connection) {
        if(isset(self::$instance ))
            throw new \Exception('A connection to a database has already been set.');

        self::$instance = $connection;
    }

    static function exec($query) {
        return self::$instance->exec($query);
    }
}

Connection::init(new PDO('blahblah'));

Connection::exec('SELECT * FROM users;');

1 个答案:

答案 0 :(得分:1)

最佳做法是创建您的PDO实例,然后将其注入您的课程。这样您就不必在课堂上弄清楚如何连接数据库。

class Something {
    /** @var \PDO */
    var $pdo;

    public function __construct(\PDO $pdo) {
        $this->pdo = $pdo;
    }
}

$class = new \Something($mypdo);
相关问题