Глобально доступное соединение с базой данных без использования Global / Singleton - PullRequest
1 голос
/ 22 сентября 2011

Я создаю новое PHP-приложение и хочу убедиться, что правильно понял основную работу, чтобы избежать любых будущих проблем.Я знаю, что в моем приложении будет более одного класса, для которого понадобится соединение с базой данных (PDO), и после долгого поиска в Интернете я не могу найти окончательного решения.

Мне лично нравится шаблон проектирования синглтонов, но есть много людей, которые говорят, что синглетонов вообще следует избегать любой ценой.Эти люди, однако, не дают конкретного решения этой проблемы.

Я понимаю, что приложению может потребоваться более одного соединения с базой данных, но я не могу создать одноэлементный файл, содержащий каждое необходимое соединение с БД (т.е. БД:: getInst ('conn1') -> query ();)?

Является ли это случаем необходимости передавать объект PDO (или оболочку PDO) каждому классу, который может в этом нуждаться?Я делал это раньше, но это раздражало, когда я следил за этим.

Ответы [ 2 ]

0 голосов
/ 22 сентября 2011

но не могу ли я создать синглтон, содержащий каждое требуемое соединение с БД (т. Е. DB :: getInst ('conn1') -> query ();)?

Вы можете, это называется Мультитон Шаблон

0 голосов
/ 22 сентября 2011

Я лично считаю, что синглтон (или мультитон, если вам нужно несколько соединений с БД) подходит для такого использования.

Но если вы не хотите его использовать, вам следует взглянутьшаблон Registry .

Таким образом, вы можете иметь экземпляры классов базы данных, доступные для всех классов вашего приложения, без необходимости каждый раз передавать дополнительный параметр (что очень уродливо)ИМХО).

...