Куда вынести логику из controllers, commands, jobs. Лучшие практики Laravel разработчиков
Куда вынести логику из controllers, commands, jobs. Лучшие практики Laravel разработчиков
"В этом ролике разберем куда следует выносить логику из контроллеров консольных команд и джобсов. Какие есть для этого варианты и в целом где в Laravel хранить дополнительные классы. #controllers#laravel#cutcode --------------------------------------------------------------------------------- ???? Как насчет прокачки своих навыков с помощью наших обучающих видеокурсов по web-разработке? Переходи на мой сайт ? https://learn.cutcode.dev/ ❗️❗️❗️Присоединяйся к нашему комьюнити в телеграм - там и советом помогут и много интересного - https://goo.su/FaKvdeG ???Мой помощник Тэйлор готов выдать тебе подарок. Забирать тут - https://cutcode.dev/chat-bot?utm_source=rt --------------------------------------------------------------------------------- ⏰ Таймкоды: 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 разработчика выступал Люк Даунинг и дополнил этот подход несколькими улучшениями которые мы сейчас с вами также рассмотрим. --------------------------------------------------------------------------------- ? делитесь этим видео с друзьями: https://www.youtube.com/watch?v=0CUIG1JM4IA ? подпишитесь на YouTube-канал: https://www.youtube.com/c/CutCodeRu?sub_confirmation=1 ? Курс по Laravel с нуля: https://www.youtube.com/watch?v=phTSw6XDATw&list=PLTucyHptHtTkUbXaikXEmCWL8GradRx9I Куда вынести логику из controllers, commands, jobs. Лучшие практики Laravel разработчиков --------------------------------------------------------------------------------- ? наш сайт: https://cutcode.dev/?utm_source=rt ? наш instagram: https://www.instagram.com/cutcoderu/ ? Наш telegram-канал: https://t.me/laravel_cutcode"