クラスに接続文字列を渡すことには多くの欠点があり、利点はありません。あなたは正しい方向に進んでいますが、接続文字列の代わりにデータベースオブジェクトを渡したいと考えています。
依存性注入は、クラスにデータベースへのアクセスを許可する優れた方法です。つまり、オブジェクト自体が何らかのグローバル変数から依存性を取得するのではなく、依存性(つまりデータベースオブジェクト)を必要とするオブジェクトに渡すことを意味します。
setDb()
のようなメソッドを使用することをお勧めします クラスでデータベースオブジェクトを渡し、内部で使用するためのプロパティとして保存します。
たとえば、データベースオブジェクト$db
を作成したと仮定します。 初期化スクリプトの場合:
class SomeClass
{
protected $db;
public function setDb($db)
{
$this->db = $db;
}
public function something()
{
// do some query on the database using $this->db
}
}
$obj = new SomeClass();
$obj->setDb($db);
$obj->something();
DIには、あなたが言及した利点があります。メソッドで多くの作業を行うことなく、データベースを簡単に切り替えることができます。他にも利点があります。つまり、テストが簡単です。