我有点困惑:单身人士很糟糕,全球化最差。那么在不同的类之间共享对象(例如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;');
答案 0 :(得分:1)
最佳做法是创建您的PDO实例,然后将其注入您的课程。这样您就不必在课堂上弄清楚如何连接数据库。
class Something {
/** @var \PDO */
var $pdo;
public function __construct(\PDO $pdo) {
$this->pdo = $pdo;
}
}
$class = new \Something($mypdo);