我通常将PDO对象存储为成员。但是,在练习依赖注入期间,我遇到了一个问题,我无法决定处理数据库连接的优雅方式。
!!我做了什么。 在每个实例化类中,我总是将PDO对象传递给构造函数。构造函数存储给定PDO对象的引用。
class Examples
{
/* Properties */
public $db;
/* Constructor */
public function __construct(PDO &pdo)
{
$this->db = $pdo;
}
//..
}
它运作良好,即使我有不明原因。我困扰着一些bzar怀疑,Am I doing right?
主要问题是,如何为某些类提供数据库连接?扩展PDO?传递PDO对象作为参数?或者让另一个类扩展PDO并实现它们? .. ??? ??? ???????????? ; OTL
答案 0 :(得分:1)
您不需要使用&符号传递$ pdo作为参考,因为在PHP中,默认情况下,对象通过引用传递。 你的榜样很好。 除非使用专门版本的PDO,否则切勿使用PDO扩展您的实体/模型类。 如果你有很多使用$ pdo和其他服务的类(例如会话,文件系统,API等),那么你可以考虑创建一个服务管理器(容器),然后调用它来获取可重用的对象,比如你的$ PDO。 如果您将来用其他东西替换PDO,您不需要重写所有将其作为参数的类。