Так что в настоящее время мой class DATABASE
использует один тоннель для соединения и вызывается в конструкторе моего class SQL
. У меня есть 4 других класса, которые расширяют class SQL
для доступа к его методам. Проблема в том, что в некоторых случаях дети копируют друг друга, поэтому я боюсь, что создаю несколько объектов 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 будет содержать объект соединения с фактической базой данных и быть создан один раз из-за Singleton в расширенном классе. Правда?? – Naterade
действительно не распространяется, я бы сказал, что все классы смогут использовать один экземпляр базы данных. – Nazariy
Мне нравится ваш подход, спасибо! – Naterade