0

所以代码是:DAO类

    abstract class DAO  
    {   
    protected $db; 
    protected $SQL_host='localhost';
    protected $SQL_port='3306';
    protected $SQL_dbname='projet'; 
    protected $SQL_login='root'; 
    protected $SQL_password='';

    protected function __construct()
    {
        $this->setDb(new PDO('mysql:host='.$this->SQL_host.';port='.$this->SQL_port.';dbname='.$this->SQL_dbname, $this->SQL_login, $this->SQL_password)) ;
    }

    protected function setDb(PDO $bdd)
    {
        $this->db = $bdd ;
    }


    }

和子 UserDAO 类

     class UserDAO extends DAO 
     {
     public function __construct()
     {
         parent::__construct();
     }
     }

当 UserDAO 子类继承父 DAO 时,子类是否获得父类的属性?如果没有,我该怎么做?

我一直在环顾四周,他们大多告诉使用 get 函数,但这真的不是我想要做的。谢谢你的帮助

4

2 回答 2

2

是的,子类继承父类的成员。

于 2013-11-05T18:46:02.120 回答
1

我和你有同样的问题。我希望子类继承数据库 pdo 实例。问题是,如果我有多个模型(例如“用户”和“文档”),它最终会创建多个 pdo 实例(超级浪费)。我求助于依赖注入。我在类之外创建了实例,然后将它传递给任何需要 pdo 的类:

class UserDAO extends DAO 
{
     public function __construct($db=NULL)
     {
         if($db){//if database is requested
        parent::__construct($db);
    }
     }
}

有很多支持或反对依赖注入的论据——但我发现这对我自己来说最有效。

在回答您的问题时,您似乎做得对(不过,就像我说的那样,使用 PDO 可能不是最好的)。确保这两个类都包含在您的脚本中。

于 2013-11-05T18:49:33.657 回答