データベースクラスにシングルトンパターンを使用しないように助言しました。私はそれに賛成であることを完全に理解していない、とにかくこの時点で合意があるように私はルールに従う。PHP:データベース接続を共有するか、新しい接続を作成しますか?
しかし、PHPの一般的なクラスのインスタンスを共有するのは悪い習慣ですか?ここで提供する2つの例の中で最も良いのはどれですか?私は最初のアプローチで実際にシングルトンパターンを使用していますか?
//semi-pseudo Code
Class DB extends mysqli{
//
}
Class A {
$db; //Of type Class DB, initialized in the constructor.
//In some method
//Should I do this, so sharing the data base connection?
$b = new DB($db);
// OR
// Should I instantiate a new instance?
$newDb = new DB();
$b = new B ($newDb);
}
Class B {
$db;//Of type Class DB initialized in the constructor.
私はタイプDBのメンバーとクラスAを有する
..クラスDBは、データ・ベース・エクステンションである持っています。
クラスAは、クラスBのインスタンスを作成する必要があります。また、クラスBもインスタンスDBを持ちます。
AがBに
にDBインスタンスを渡す必要がありますので、私は依存性注入パターンを使用していますが、私はBに渡す新しいDBインスタンスをインスタンス化する、または私はちょうどAのDBインスタンスへの参照を渡すことができます。
シングルトンの悪い側についての説明 – Svisstack
ここに引数があります:http://stackoverflow.com/questions/4595964/who-needs-singletons/4596323#4596323 –
はい、それは主な引数ですが、インターフェイスの後ろにあなたのシングルトンの実装があるので、それを模擬することができます –