Я написал класс данных для обработки запросов MySQL, а затем все остальные классы, такие как login
, products
, расширяют этот класс, чтобы использовать базу данных. В результате, при каждой загрузке страницы создает 2 или более DB соединения в связи с чем-то подобного следующим:Должен ли базовый класс базы PHP PHP создавать несколько соединений?
$login, parent::__construct(); // check login via db
$products, parent::__construct(); // fetch products from db
Есть ли способ обойти эту проблему, такие как добавление некоторого кода в конструкторе, чтобы проверить, имеет ли существующее соединение DB уже созданы?
Совместимый разработчик Я работаю с написанием в процедурном стиле и просто использует один глобальный $_db object
для всех запросов, и это кажется намного более эффективным, поскольку он создает только одно соединение с БД.
Вы должны использовать 'DI' и передать экземпляр вашего класса' DB' ваших 'классов Factory'. Таким образом, U имеет только одно открытое соединение на одного клиента. – DarkBee
. Вы можете установить свой '$ _db_object' как статичный внутри вашего класса (' private static $ _db_object'), а в __construct() проверить, является ли 'self :: $ _ db_object' если он не подключен. – Naomi
Нет, вы хотите, чтобы ваши приложения открывали только одно подключение к базе данных, несколько соединений создадут нежелательные накладные расходы в приложении. @Naomi static - один из способов, но предпочтительнее использовать инъекцию зависимости, ваша абстракция должна быть отключена от соединения, и вы передаете соединение в модель. –