[英]php class extended multiple times
在花了半个小时为这个问题找到一个恰当的,不言自明的标题之后,我终于放弃了。 抱歉,我不是英语母语人士。
无论如何,问题是关于使用特定的类进行多次扩展,而不是多次继承。 因此,想象一下从同一函数调用的两个存储库类:
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有2个不同的连接-这将导致性能下降,或者pdo识别出存在连接,因此它只是忽略了第二个实例?
您可以在PDO中为mysql连接声明一个“静态”字段。 这样,无论哪个子类负责实例化,都将在每个实例中使用相同的字段。
它还要求您静态访问该字段。 PDO::$mysql_link;
如果在未指定可见性的情况下声明该字段,则该字段将是公共的,这意味着只要定义了PDO,您就可以在任何地方引用同一字段。
我不确定PDO是否有支票。
但是您有不同的选择。 构建一个Singelton PDO对象,并在每个类中使用此Singleton或使用依赖注入。 含义是设置一个PDO对象,然后将其注入到构造函数中的类中(构造函数注入),或使用另一个函数注入(类注入器)
我将使用依赖项注入来运行,因此您可以轻松更改“数据库访问对象”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.