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 に答える