@bitande
PHP

Как правильно использовать синглтон Бд?

Подскажите как правильно сделать.
Пытаюсь сделать простейшую cms по mvc паттерну.
Хочу создать объект базы данных всего один раз. Класс Db - это синглтон.

Можно ли так сделать?

$db = Db::getInstance();

Объект Db создается всего один раз, затем в контроллерах используется его статические методы, например:

$data= Db::getOne(1);

нужной переменной сразу присваиваются нужные данные через статический метод, которые затем выводятся в шаблоне.

Вопрос в том, где создать объект класса Db? Во фронт контроллере, в самом главном контроллере, от которого будут наследоваться остальные или еще где-то?
  • Вопрос задан
  • 706 просмотров
Решения вопроса 1
delphinpro
@delphinpro
frontend developer
Db::getInstance()->getOne(1)
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@oxidmod
правильно поместить объект бд в контейнер и использовать внедрение в тех местах где он нужен
Ответ написан
@dev400
правильно использовать инверсию зависимостей и передать готовый объект класса соединения в нужную модель. Синглтон это антипаттерн, зачем он вообще тут?
Ответ написан
@firm
> Вопрос в том, где создать объект класса Db?
Реализация подключения к базе данных никакого отношения к контролером не имеет.
Класс Db - это системный класс вашего фреймворка.
Вопрос где размещать его, это ваши предпочтения, на мой взгляд было бы логично разместить его, например, в папке systems. Все зависит от того как вы спроектировали логическую структура вашего фреймворка.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы