花了半个小时为这个问题找到一个正确的,自我解释的标题后,我终于放弃了。为此道歉,我不是母语为英语的人。
无论如何,问题是关于使用特定类多次扩展 - 而不是多重继承。因此,想象一下从同一个函数调用的两个存储库类:
public function someFunction()
{
$qp = QuestionRepository();
$cp = CommentRepository();
}
和QuestionRepository就像:
class QuestionRepository extends PDO
{
public function __construct()
{
parent::__construct();
}
}
CommentRepository就像:
class CommentRepository extends PDO
{
public function __construct()
{
parent::__construct();
}
}
而PDO类是这样的:
class PDO
{
public function __construct()
{
$pdo = new PDO(...);
}
}
基本上,PDO
类扩展了两次,因此启动了两个PDO实例。但是,问题是这是否意味着与mysql的两个不同的连接 - 这会导致性能下降或pdo识别出存在连接,因此它只是忽略了第二个实例?
答案 0 :(得分:1)
您可以在PDO中为mysql连接声明一个“静态”字段。这样,无论哪个子类负责实例化,都将在每个实例中使用相同的字段。
它还要求您静态访问该字段; PDO::$mysql_link;
如果声明字段而未指定可见性,则它将是公共的,这意味着只要定义了PDO,您就可以从任何地方引用相同的字段。
答案 1 :(得分:0)
我不确定PDO是否有支票。
但你有不同的选择。构建Singelton PDO对象并在每个类中使用此Singleton或使用依赖注入。意思是设置一个PDO对象并在构造函数(构造函数注入)或其他函数(setter注入)中将其注入到类中
我会使用依赖注入运行,因此您可以轻松更改“数据库访问对象”