Как эффективно провести рефакторинг кода приложения laravel - PullRequest
0 голосов
/ 04 февраля 2019

Я могу реорганизовать коды приложений laravel 5.4 из-за некоторых проблем: сложность кода, отсутствие опыта проектирования и т. Д.

Я прочитал, что коды контроллера должны быть максимально короткими (утверждается, что они являются частями связующего кода).

Q1: у меня есть некоторые библиотеки, подобные кодам.Эти библиотечные функции / классы должны быть в связанных классах Model, или я должен иметь дополнительные классы, которые используют классы Model?

Q2: Если мне не нужны дополнительные классы (поэтому достаточно классов модели),я должен вызывать эти бизнес-логики из блейд-файлов или из контроллеров?(Бизнес-логика в контроллерах делает их довольно большими и сложными).

Пример: В функции контроллера я оцениваю набор данных после запроса.После этого мне нужна бизнес-логика для каждого поста, например effectiveValueOfPost($post).Должен ли я вызвать его из контроллера и передать в связанный вид или вызвать его из файла блейда.

Спасибо.

1 Ответ

0 голосов
/ 05 февраля 2019

Я собираюсь начать рефакторинг всего моего приложения Laravel в соответствии с самыми современными стандартами сегодня.Вот как должно быть структурировано или создано приложение Ideal Laravel.

Примечание: Это не жесткие правила, но будет проще поддерживать ваши приложения Laravel для будущих обновлений, если вы их структурируете.таким образом.

Контроллеры: Контроллеры должны иметь эти методы для создания, чтения, обновления и уничтожения определенной модели.Для простоты предположим, что наша модель Product :

  • index () - Возвращает список продуктов.
  • create () - Itпокажет форму для создания модели.(При необходимости)
  • store () - в нем будет храниться информация о продукте, полученная из формы создания.
  • show () - будет возвращаться конкретный продукт.
  • edit () - Появится форма для редактирования любого продукта.
  • update () - Это обновит любой конкретный продукт.
  • destroy () - Это удалит конкретный продукт.

Маршруты: Маршруты будут следовать одинаковому шаблону для разных моделей.Вот маршруты, которые будут вызывать указанные выше функции в контроллере для конкретной модели, в данном случае products.

  • / products - GET - ProductController @ index
  • / products /create - GET - ProductController @ create
  • / products - POST - ProductController @ store
  • / products / {id} - GET - ProductController @ show
  • / products / {id} / edit - GET - ProductController @ edit
  • / products / {id} - PATCH - ProductController @ update
  • / products / {id} - DELETE - ProductController @ destroy

Models : Теперь все все, что касается базы данных (запросы, сложные запросы, отношения), будет храниться в вашей модели (в данном случае app / Product.php).Нет определенных функций, которые вы можете использовать в модели.Таким образом, вы можете поместить все свои запросы, и данные обработки из запросов будут сохранены как функции в Model.

Представления : для самой базовой модели потребуется create, edit, index и show просмотров.Внутри каталога views вы можете создавать разные каталоги для разных моделей.В этом случае в каталоге views будет каталог products , который будет содержать все приведенные выше представления, а также дополнительные представления, которые могут ему понадобиться.

Я работал над некоторыми действительно сложными приложениями в Laravel.И это структура, которой я следую, чтобы избежать путаницы при создании или обновлении кода приложения.Мне даже не нужно запоминать случайное имя, которое я дал некоторому представлению, потому что все правильно структурировано и полностью основано на имени контроллера.

Некоторые контроллеры не требуют всех этих маршрутов и функций,в этом случае вы все равно можете следовать этому методу, не будучи запутанными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...