簡體   English   中英

PHP OOP:從子級訪問父級屬性/從父級屬性繼承的子級

[英]PHP OOP : Accessing parent attributes from child / Child inheriting from parent's attributes

所以代碼是: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函數,但這並不是我要嘗試的。 謝謝你的幫助

是的,子類繼承了父類的成員。

我和你有同樣的問題。 我希望子類繼承數據庫pdo實例。 問題是,如果我有多個模型(例如“用戶”和“文檔”),那么最終會創建多個pdo實例(超級浪費)。 我求助於依賴注入。 我在類之外創建了實例,然后將其傳遞給需要pdo的任何類:

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

有很多支持或反對依賴注入的論點-但我發現這對我自己最有效。

在回答您的問題時,您似乎做對了(不過,就像我說的那樣,使用PDO可能不是最好的選擇)。 確保兩個類都包含在腳本中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM