MySQL — реализация моей первой модели PHP

Я написал небольшой бэкэнд RESTful PHP с использованием фреймворка Slim (http://www.slimframework.com/), который взаимодействует с базой данных MySQL, и сейчас у меня есть только один класс, выполняющий все взаимодействия с БД, и он становится довольно большим. Итак, пришло время организовать это немного более чисто.

Исходя из того, что я понимаю из MVC, лучшим способом сделать это может быть реализация уровня модели следующим образом:

  • каждый логический объект в системе будет реализован с помощью класса данных. И.Е. учетные записи пользователей: класс под названием «Account» с getId (), getName (), getEmail () и т. д.
  • и соответствующие фабричные объекты, то есть AccountFactory, который владеет соединением с БД и создает класс Account для управления в другом месте на уровне бизнес-логики.
  • Уровень бизнес-логики все еще будет довольно простым, может быть, класс MyApplication, который создает экземпляры фабрик и использует их для ответа на вызовы RESTful API.
  • Бизнес-логикой может быть, например, сопоставление двух учетных записей вместе на основе географического положения. Так что в этом случае я бы просто проверял данные в двух отдельных объектах Account вместо необработанных данных, загружаемых из базы данных.

Но кажется, что на рефакторинг ушло много времени, чтобы сделать в основном то же самое. Почему я не хочу просто использовать данные простого массива, которые я загружаю из базы данных? Конечно, он не зависит от БД, но я все равно не планирую сейчас переключаться с MySQL.

Правильно ли я подхожу к этому?

1

Решение

Ну, отчасти.

Первый пункт описывает модель — М в MVC. Абстрагирование вашей «бизнес-логики» от этой модели имеет смысл во многих отношениях. Одним из вариантов использования может быть веб-сайт, который взаимодействует с теми же данными, что и REST API. Вы можете повторно использовать модель и вам нужно только построить новые контроллеры.

«Бизнес-логика» / «слой», вероятно, будет контроллером — C в MVC. Однако я бы не стал владеть объектами фабрики подключением к БД, поскольку в некоторых случаях может потребоваться использовать несколько объектов фабрики, но следует использовать одно и то же соединение с базой данных …

Я предлагаю вам прочитать больше о структуре и преимуществах и недостатках подхода MVC.

0

Другие решения

когда вы начинаете с нуля, лучше всего:

  • иметь ORM (что означает, что вы должны иметь отношения в вашей базе данных MySQL с внешними ключами и т. д.). Это очень быстрый способ управления базой данных в вашей программе.
  • Создайте свой домашний класс для каждого класса = 1.

Лучше всего иметь ORM, но он может быть немного тяжелым (это зависит от вашей архитектуры и приложения).
В вашем случае поставить ORM кажется слишком много, потому что вы много развились.
Это зависит от будущего вашего приложения: будет ли оно расти снова? Будет ли на этом развиваться много разработчиков?

Для небольшого / среднего размера вы можете легко немного изменить свой класс по большой теме, например: 1 класс для вашей 3-х самых больших сущностей, в которых у вас больше запросов. Это будет немного убирать беспорядок и упорядочивать вещи, а затем вы сможете перенести ваши новые классы на новую сущность. Для старых вы можете мигрировать шаг за шагом или нет

Еще одна хорошая практика — иметь геттеры и сеттеры. $this->getter_id(); $this->setter_id( $in_nId ); Это очень поможет вам, если вам нужно изменить некоторые поля БД

-1

По вопросам рекламы [email protected]