現在私のclass DATABASE
は接続にシングルトンを使用し、私のclass SQL
のコンストラクタで呼び出されます。私はそのメソッドにアクセスするためにclass SQL
を拡張する4つのクラスを持っています。問題は、子どもがいくつかのケースでインスタンス化するため、デフォルトで親コンストラクタ(別名class SQL
)を呼び出すため、複数のclass SQL
オブジェクトが作成されてしまうのではないかと心配です。私は依存性注入について読みましたが、私の状況でそれを実装する方法は明確ではありませんので、これは私が考えていたものです。 すべてのクラスをclass DATABASE
に拡張し、class SQL
メソッドを静的にします。 しかし、私はclass DATABASE
でシングルトン接続をそれ自身のクラスで呼び出す必要があります。PHPは、親クラスが子どもからの複数のインスタンス化を防止しますか?
class DATABASE {
function __construct() {
self::getInstance();
/// or DATABASE::getInstance (im not quite positive which way)
}
public static function getInstance() {
if (self::$instance == false) {
self::$instance = new DATABASEMANAGER();
}
return self::$instance;
}
}
は、私は複数のオブジェクトを作成しておりません知っている、すべてのクラスがclass DATABASE
を拡張するので、この方法を理解し、お互いをインスタンス化します。 私はこれが意味をなさないことを願っています。あなたが私を必要とする場合、私はもっと詳しく説明できますが、これは私の問題へのアプローチとして以来のことですか?
私は私はあなたがになってものを見ると思います。したがって、すべてのクラスはデータベースを拡張します。 DATABASEMANAGERは実際のデータベースへの接続オブジェクトを含み、拡張クラスのシングルトンのために一度インスタンス化されます。本当? – Naterade
実際には拡張されていない、私はすべてのクラスが単一のデータベースインスタンスを使用できると言うだろう。 – Nazariy
私はあなたのアプローチが好きです、ありがとう! – Naterade