PHP OOP:从继承自父属性的子/子访问父属性

时间:2013-11-05 18:40:53

标签: php oop

所以代码是: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功能,但这真的不是我想要做的。谢谢你的帮助

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

支持或反对依赖注入有很多参数 - 但我发现这对我自己来说效率最高。

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