DTO в laravel для requests а также обзор библиотеки от Spatie
Сегодня мы затронем тему DTO в Laravel - data transfer object. Рассмотрим, как работать с данными в структурированном виде. Научимся использовать объекты передачи данных (DTO).
#dto#laravel#cutcode
---------------------------------------------------------------------------------
❗️❗️❗️Присоединяйся к нашему комьюнити в телеграм - там и советом помогут и много интересного -
🤖🤖🤖Мой помощник Тэйлор готов выдать тебе подарок. Забирать тут -
---------------------------------------------------------------------------------
⏰ Таймкоды:
00:00 Введение
00:31 Описание проблемы
01:52 Реализация DTO
03:36 Обзор библиотеки от Spatie
06:57 Подведение итогов
Всех поклонников Laravel я приветствую на канале Cutcode! Сегодня мы затронем тему DTO в ларавел - data transfer object. Быстро пройдемся по этой теме а также рассмотрим специальный пакет от spatie по организации слоя DTO в Laravel проекте. Обсудим с вами зачем это нужно, как с этим работать и мое личное мнение об этом паттерне.
Итак давайте начнём с проблемы - мы работаем с request в laravel. У нас есть валидация, есть метод validated который возвращает нам массив и мы находясь здесь ничего не знаем, что у нас в этом массиве, для нас он черный ящик. IDE нам также ничего не подскажет об этом массиве. Мы не знаем какие элементы в этом массиве в данном случае находится. Если мы работаем с FormRequest и провалимся в класс, там и хотя бы в методе rules можем увидеть какие именно параметры будет возвращать метод validated. Но если в целом мы работаем с request и возвращаем все параметры, то мы вообще понятия не имеем что там находится. Ну и здесь в целом тоже пока мы не уходим в класс, мы ничего о нем не знаем. Ошибиться в таком подходе гораздо проще. Да как минимум случайно ошибиться в написании ключа. Исправить сие недоразумение можно добавив дополнительный слой представления DTO и это всего лишь дополнительный класс, который примет все параметры из вашего массива с запросам и трансформирует объект перед определенными свойствами и типами и далее с ним работа будет выполнена удобно и IDE нам всегда подскажет что именно содержится в этом объекте. Давайте взглянем на такой объект и применим его в нашем примере.
Итак давайте взглянем на такой класс. Я его уже создал, располагается он у меня в директории DTO и здесь класс PostForm, который как раз ответственен за PostFormRequest. Давайте на него посмотрим как видите это простой класс ничего особенного в нем нет, за единственным исключением - присутствует статический метод FormRequest, который принимает объект Request и в последующем создает экземпляр класса FormRequest на основе параметров которые у нас как раз находятся в методе Rules, который у нас возвращаются от метода validated. Далее в контроллере нам необходимо немножко изменить наш код - убрать RequestValidated - здесь обратиться к PostForm обратиться к методу FormRequest параметрам отдать объект FormRequest и в конечном итоге работать с датой как с экземпляром класса PostForm. И здесь уже IDE нам спокойно подсказывает, какие свойства есть какие методы, плюс мы в самом классе можем указать какие типы у свойств. И работать в таком ключе будет гораздо удобнее.
---------------------------------------------------------------------------------
📹 делитесь этим видео с друзьями:
🔔 подпишитесь на YouTube-канал:
📼 Курс по Laravel с нуля:
DTO в laravel для requests а также обзор библиотеки от Spatie
---------------------------------------------------------------------------------
🔗 наш сайт:
📷 наш instagram:
📱 Наш telegram-канал:
8 views
1115
369
5 minutes ago 00:02:44 1
«Это будет востребовано десятилетиями»: личные вещи героев спецоперации передали в краевой Госархив
32 minutes ago 00:01:56 1
⚪ Китайский с нуля за месяц 💣 Тяжело выучить китайский язык с нуля
43 minutes ago 00:01:46 1
💳 КАК ПОДНЯТЬ НА КИБЕРСПОРТЕ ⭐ САЙТ ДЛЯ СТАВОК НА ДЕНЬГИ 💣
56 minutes ago 00:02:18 65
Сколько же в этих вещах бактерий
1 hour ago 00:01:10 4
Видео от Новости России и Мира
2 hours ago 00:08:16 2
Интервью / Иван Паньшин / Центр промышленного дизайна
2 hours ago 00:01:44 1
РАБОТА В ИНТЕРНЕТЕ ТОП 10 САЙТОВ 🚫 ПОДРАБОТКА ПЕРЕВОДЧИКОМ В ИНТЕРНЕТЕ 🔔
2 hours ago 00:02:09 1
АВИТО РАБОТА НАЙТИ
2 hours ago 00:02:22 13
Бери и делай | Проще простого
2 hours ago 00:27:49 1
[УДИВИТЕЛЬНАЯ ПЛАНЕТА ТВ] 20 Шокирующих Вещей из Прошлого, Которые Были Нормой
2 hours ago 00:11:31 2
Шкаф до полка в прихожую
2 hours ago 00:01:30 1
⚠ Как правильно выбрать лопату 🤘 Нож выживания купить на авито ☑
3 hours ago 00:01:56 1
Китайский язык учить бесплатно с нуля 🔴 Учим китайский язык бесплатно
3 hours ago 00:40:19 2
Можем ли мы говорить негативные вещи о еврее? Называть клоунов клоунами, например.
3 hours ago 00:01:32 1
🔥 Платки купить в москве магазины адреса ❗ Русские платки интернет магазин
3 hours ago 00:01:32 1
🌟 ИВАНОВСКИЕ ПЛАТКИ ⚡ ПЛАТКИ ПАВЛОВО ПОСАД 🔴
3 hours ago 00:02:09 1
💴 Онлайн зарплата 2024 год 📢
4 hours ago 00:02:09 1
🤑 РЕАЛЬНЫЙ ЗАРАБОТОК НЕ ЛОХОТРОН ⭐ БЫСТРЫЙ ЗАРАБОТОК В ИНТЕРНЕТЕ 100 РУБЛЕЙ ЗА 5 МИНУТ
4 hours ago 00:00:10 15
dance slow motion
4 hours ago 00:01:56 1
УЧИМ КИТАЙСКИЙ С НУЛЯ ДЛЯ НАЧИНАЮЩИХ ❌
4 hours ago 00:00:37 1
Вертикальный этикетировщик с прижимными ремнями для нанесения стикеров на плоские предметы LL-200
4 hours ago 00:00:39 1
Этикетировочная линия для вертикального нанесения этикеток на крышки и плоские предметы LL-200
4 hours ago 00:01:16 1
Широкий пластинчатый конвейер для перемещения коробок и крупных предметов K-10
4 hours ago 00:00:22 1
Вертикальная упак. машина с двумя виброориентаторами для упаковки твердых предметов в пакеты LPV-50