Куда вынести логику из controllers, commands, jobs. Лучшие практики Laravel разработчиков
Просто о сложном. CutCode
0:00 / 0:00
Куда вынести логику из controllers, commands, jobs. Лучшие практики Laravel разработчиков
27 005 просмотров · 4 года назад
Просто о сложном. CutCode
16,7 тыс. подписчиков
27 005 просмотров · 4 года назад
В этом ролике разберем куда следует выносить логику из контроллеров консольных команд и джобсов. Какие есть для этого варианты и в целом где в Laravel хранить дополнительные классы.
#controllers#laravel#cutcode
---------------------------------------------------------------------------------
🚀📹👨🏫 Как насчет прокачки своих навыков с помощью наших обучающих видеокурсов по web-разработке? Переходи на мой сайт 👇
https://learn.cutcode.dev/
❗️❗️❗️Присоединяйся к нашему комьюнити в телеграм - там и советом помогут и много интересного - https://t.me/laravel_chat
🤖🤖🤖Мой помощник Тэйлор готов выдать тебе подарок. Забирать тут - https://cutcode.ru/chat-bot
---------------------------------------------------------------------------------
⏰ Таймкоды:
00:00 Введение
00:35 Подход с использованием ActionClass
02:22 Люк Даунинг об ActionClass
03:25 Создание интерфейсов для ActionClass
07:52 Тестирование
08:39 Работа с моделями
09:22 Немного о трейтах
11:02 Сервис классы
12:22 Дополнительные и вспомогательные классы
13:15 ViewModels
15:02 Подведение итогов
Всех поклонников Laravel я приветствую на канале Cutcode! Сегодня мы разберем тему которую частично уже разбирали на канале, но она все еще вызывает массу вопросов - а именно куда выносить логику из контроллеров консольных команд и джобсов - какие есть для этого варианты и в целом где в Laravel хранить дополнительные классы: в каких директориях и в каком виде. Обо всем об этом, но с уклоном в экшен классы в сегодняшнем видео. Ну что же погнали!
Друзья давайте начнем с подхода с использованием action классов. Я признаюсь такой подход мне нравится больше всего. Сами action классы хранятся в директории actions вы конечно можете хранить и в любой другой директории, но так принято у Laravel разработчиков и если кто-то будет работать после вас он сразу поймёт что это за директория actions и что здесь за классы. Сами классы выглядят следующим образом - скажем возьмем CswArrayAction здесь есть всего один метод handle это тоже сделано как скажем единый паттерн чтобы всем остальным разработчикам было понятно что именно здесь происходит. И далее у нас есть контроллер Csv контроллер у которого всего один метод invoke метод где мы берем сессии файл и парсим его содержимое в массив и далее передаем во вью. Эту логику я взял просто так чтобы она здесь была, чтобы он был не пустой. На этот момент мы не обращаем внимания у нас просто есть контроллер с какой-то логикой и перед нами стоит задача перенести эту логику в отдельный слой action класс. Далее мы создаем этот экшен класс: вот он у нас здесь. Сюда мы уже перенесли всю логику далее в самом контроллере мы можем этот дубль удалить само собой и здесь с помощью сервис контейнера сделать инъекцию этого action класса CswArrayAction и далее во вью передаем data обращаемся к этому action классу и вызываем метод handle. Вот так в одну строку мы разгрузили контроллер и перенесли его логику в отдельный action класс. Но на этом мы не заканчиваем с action классами на последнем Laracon с докладом о action классах что это лучшие друзья laravel разработчика выступал Люк Даунинг и дополнил этот подход несколькими улучшениями которые мы сейчас с вами также рассмотрим.
---------------------------------------------------------------------------------
📹 делитесь этим видео с друзьями:
• Куда вынести логику из controllers, comman...
🔔 подпишитесь на YouTube-канал: https://www.youtube.com/c/CutCodeRu?s...
📼 Курс по Laravel с нуля:
• Курс по Laravel 8 обучение с нуля. Бесплат...
Куда вынести логику из controllers, commands, jobs. Лучшие практики Laravel разработчиков
---------------------------------------------------------------------------------
🔗 наш сайт: https://cutcode.ru/
📷 наш instagram: / cutcoderu
📱 Наш telegram-канал: https://t.me/laravel_cutcode