php类多次扩展

时间:2011-10-31 00:51:28

标签: php connection pdo extend

花了半个小时为这个问题找到一个正确的,自我解释的标题后,我终于放弃了。为此道歉,我不是母语为英语的人。

无论如何,问题是关于使用特定类多次扩展 - 而不是多重继承。因此,想象一下从同一个函数调用的两个存储库类:

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识别出存在连接,因此它只是忽略了第二个实例?

2 个答案:

答案 0 :(得分:1)

您可以在PDO中为mysql连接声明一个“静态”字段。这样,无论哪个子类负责实例化,都将在每个实例中使用相同的字段。

它还要求您静态访问该字段; PDO::$mysql_link;

如果声明字段而未指定可见性,则它将是公共的,这意味着只要定义了PDO,您就可以从任何地方引用相同的字段。

答案 1 :(得分:0)

我不确定PDO是否有支票。

但你有不同的选择。构建Singelton PDO对象并在每个类中使用此Singleton或使用依赖注入。意思是设置一个PDO对象并在构造函数(构造函数注入)或其他函数(setter注入)中将其注入到类中

我会使用依赖注入运行,因此您可以轻松更改“数据库访问对象”