У меня есть класс сеанса, которому необходимо хранить информацию о сеансе в базе данных MySQL. Очевидно, мне нужно будет запросить базу данных в методах этого класса. В общем, мне может потребоваться подключить более одной базы данных одновременно, и я уже могу быть подключен или не подключен к этой базе данных.
Учитывая это, каков наилучший способ доступа к базам данных для класса сеанса или любого класса в этом отношении? Имеет ли смысл создание класса для управления подключениями?






Я бы посоветовал ознакомиться с этой презентацией, в ней, помимо прочего, рассказывается о лучших практиках доступа к базе данных:
Соединения с базой данных - яркий пример того, когда и где можно безопасно использовать шаблон Singleton; однако, если вы знаете, что объект сеанса будет глобальным объектом, и это будет единственное место, где вам нужно будет создавать подключения к базе данных, вы можете довольно безопасно хранить подключения к базе данных как члены экземпляра класса сеанса.
Да, я бы использовал DBAL. Вы можете написать свое собственное или использовать существующее решение, например PDO. Даже если вы используете существующее решение, вы можете захотеть написать класс-оболочку, который использует одноэлементный образец, чтобы одно соединение могло использоваться совместно со всеми частями вашего кода.
Что, если мне нужно быть подключенным к базе данных A и базе данных B одновременно? Это будет одноэлементная фабрика? Или мне понадобится еще одна обертка вокруг синглтонов?
Я бы написал еще два класса, которые расширяют синглтон и меняют только учетные данные БД. Синглтон важен, потому что он, по сути, создает глобал, поэтому вам нужно только один раз подключиться к каждой БД.
Да, я использую одноэлементный класс базы данных для всей моей работы с БД.