【发布时间】:2013-12-15 05:10:22
【问题描述】:
我有点困惑:单例不好,全局最差。那么在不同类之间共享对象(例如 PDO 连接)的最佳做法是什么?
我希望 HTML 模板类、ACL 类等使用相同的数据库连接。
我知道新的趋势是使用 DI,但是使相同的 PDO 连接全局化的最佳做法是什么?也许使用注册表?还是将其设置为静态变量?
编辑: 这个解决方案怎么样?
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;');
【问题讨论】:
-
我只想说要务实。如果需要,请使用单例或静态注册表。你不会是attacked by ferocious velociraptors
-
本月早些时候over here 就该主题进行了一些很好的讨论。可能值得你一读
-
谢谢菲尔,我只是想进化 :) 我要放弃单例,因为我正在重写一些代码,所以我想以最好的方式做。
标签: php