2016-10-11 7 views
1

私は通常PDOオブジェクトをメンバーとして保存します。しかし、実際の依存関係注入中に、私はデータベース接続を扱うエレガントな方法を決めることができないという問題があります。クラスでデータベース接続を処理する適切な方法はありますか?

!!私がやったこと。 クラスをインスタンス化するたびに、私は常にPDOオブジェクトをコンストラクタに渡します。コンストラクタは、指定されたPDOオブジェクトの参照を格納します。

class Examples 
{ 
    /* Properties */ 
    public $db; 

    /* Constructor */ 
    public function __construct(PDO &pdo) 
    { 
     $this->db = $pdo; 
    } 

    //.. 
} 

私が不明な理由で苦しんでいても、うまくいきます。私はいくつかの疑問に気付いています、Am I doing right?

主な質問は、どのように特定のクラスにデータベース接続を与えることですか? PDOを拡張しますか? PDOオブジェクトをパラメータとして渡しますか?または別のクラスを作成してPDOを拡張し、両方を実装しますか? .. ??? ??? ??????????? ; OTL

答えて

1

PHPでは、オブジェクトは参照によってデフォルトで渡されるため、アンパサンドを使用して$ pdoを参照として渡す必要はありません。 あなたの例は問題ありません。 特殊なバージョンのPDOを実行しない限り、PDOでエンティティ/モデルクラスを拡張しないでください。 $ pdoや他のサービス(セッション、ファイルシステム、APIなど)を使用するクラスがたくさんある場合は、サービスマネージャ(コンテナ)を作成して呼び出すことで、再利用可能なオブジェクト$ pdo。 PDOを将来別のものに置き換える場合は、PDOを引き出すすべてのクラスを引数として書き換える必要はありません。

関連する問題