@bitande
PHP

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

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

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

$db = Db::getInstance();

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

$data= Db::getOne(1);

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

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

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

Войти через центр авторизации
Похожие вопросы
12 авг. 2020, в 10:11
200 руб./за проект
12 авг. 2020, в 09:40
1000 руб./за проект
12 авг. 2020, в 08:19
5000 руб./за проект