@bitande
PHP

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

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

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

$db = Db::getInstance();

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

$data= Db::getOne(1);

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

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

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

Войти через центр авторизации
Похожие вопросы
Хабр Москва
от 150 000 руб.
FIM Санкт-Петербург
от 100 000 руб.
HORIBA Москва
от 140 000 руб.
07 дек. 2019, в 13:03
15000 руб./за проект
07 дек. 2019, в 12:58
6000 руб./за проект
07 дек. 2019, в 12:44
200 руб./за проект