Я написал небольшой бэкэнд RESTful PHP с использованием фреймворка Slim (http://www.slimframework.com/), который взаимодействует с базой данных MySQL, и сейчас у меня есть только один класс, выполняющий все взаимодействия с БД, и он становится довольно большим. Итак, пришло время организовать это немного более чисто.
Исходя из того, что я понимаю из MVC, лучшим способом сделать это может быть реализация уровня модели следующим образом:
Но кажется, что на рефакторинг ушло много времени, чтобы сделать в основном то же самое. Почему я не хочу просто использовать данные простого массива, которые я загружаю из базы данных? Конечно, он не зависит от БД, но я все равно не планирую сейчас переключаться с MySQL.
Правильно ли я подхожу к этому?
Ну, отчасти.
Первый пункт описывает модель — М в MVC. Абстрагирование вашей «бизнес-логики» от этой модели имеет смысл во многих отношениях. Одним из вариантов использования может быть веб-сайт, который взаимодействует с теми же данными, что и REST API. Вы можете повторно использовать модель и вам нужно только построить новые контроллеры.
«Бизнес-логика» / «слой», вероятно, будет контроллером — C в MVC. Однако я бы не стал владеть объектами фабрики подключением к БД, поскольку в некоторых случаях может потребоваться использовать несколько объектов фабрики, но следует использовать одно и то же соединение с базой данных …
Я предлагаю вам прочитать больше о структуре и преимуществах и недостатках подхода MVC.
когда вы начинаете с нуля, лучше всего:
Лучше всего иметь ORM, но он может быть немного тяжелым (это зависит от вашей архитектуры и приложения).
В вашем случае поставить ORM кажется слишком много, потому что вы много развились.
Это зависит от будущего вашего приложения: будет ли оно расти снова? Будет ли на этом развиваться много разработчиков?
Для небольшого / среднего размера вы можете легко немного изменить свой класс по большой теме, например: 1 класс для вашей 3-х самых больших сущностей, в которых у вас больше запросов. Это будет немного убирать беспорядок и упорядочивать вещи, а затем вы сможете перенести ваши новые классы на новую сущность. Для старых вы можете мигрировать шаг за шагом или нет
Еще одна хорошая практика — иметь геттеры и сеттеры. $this->getter_id();
$this->setter_id( $in_nId );
Это очень поможет вам, если вам нужно изменить некоторые поля БД