Всем привет!
Сегодня у нас краткий обзор Laracon online winter 2022! Ларакон в этот раз прошел бесплатно на ютубе. Думаю для многих я сэкономлю время и это уже плюс! Ларакон длился 10 часов и 2 дня ушло на съемку обзора и я старался для вас по-максимуму. Видео версия обзора:
Luke Downing
Actions are a Dev's Best Friend
Экшн класс как слой абстракции - лучший друг Laravel разработчика.
Спикер показал изначально раздутый логикой контроллер и артисан команду.
Присутствовала проблема наличия дублей и логика в контроллерах. Изначально он исправил это путем переноса логики в модель, создав метод для регистрации. Неплохой путь, но в будущем приведет к раздутой логике в модели. И на помощь приходит подход с использованием экшн классов!
Спикер также показал что такой же подход используется и в jetstream:
придерживаемся стандартов, храним экшены в директории app/Actions
к названиям приписываем Action в конце.
А содержимое экшн класса - всего лишь один метод handle() реализующий всю логику.
Мы уже привыкли к экшенам и используем их постоянно. Отличный подход, но далее спикер улучшил его.
Во первых убрал метод handle и добавил __invoke что улучшило вызов и сделало код еще более лаконичным.
Во-вторых - к экшн классу добавил контакт, интерфейс простыми словами, тем самым избавился от инъекции конкретного класса и переключился на абстракции с интерфейсом. Далее забиндили этот интерфейс к экшн классу.
В третьих - делать бинды в апп сервис провайдере не лучшее решение и на помощь приходит ЭкшнСервисПровайдер, да так намного лучше.
Далее спикер рассказал о тестировании экшенов! Насколько это просто и как круто это делается с использованием PEST! Да друзья, видимо нужно попробовать использовать PEST, хоть это и не мейнстрим!
Также продемонстрировал кейс когда нужно и зарегистрировать юзера и отправить уведомление, это два разных экшн класса! Как быть? Вызывать их один за другим?!
Спикер предлагает использовать экшн класс, который будет группировать эти два экшена и вызывать их один за другим внутри себя, а в контроллере останется лишь один экшн класс.
Резюмируя.
- Абстрактный слой для того чтобы вынести логику из контроллеров, артисан команд и джобсов.
- Контракты дадут больше гибкости нашему приложению
- Изоляция и простота тестов
- Инвок вместо хендл метода
- Небольшой экшн класс который группирует несколько экшенов
RYUTA HAMASAKI
Modularising the Monolith
Рассказал нам о подходе в разработке где делаем монолитное приложение и разделяем бизнес логику на модули. Каждый модуль имеет независимую структуру и реализацию, в нем присутствуют и роуты и провайдеры и контроллеры. То есть все то что есть в дефолтном ларавел приложении в директории app, присутствует в каждом отдельном модуле, которые также могут и общаться между собой.
Тем самым имеем множество преимуществ, таких как:
-Проект все еще остается в одном репозитории
-Модули независимы между собой
-Инкапсуляция реализации каждой бизнес сферы
-Простота поддержки и масштабирования
-Продуктивность работы в команде
Дальше спикер продемонстрировал структуру Laravel приложения при таком подходе:
- На верхнем уровне появилась директория src.
- В ней множество директорий с модулями и каждый имеет следующую структуру (каждый слой независим).
- Директория Application (Внутри Http директория и Policies)
- Директория Domain (Events, Exceptions, Jobs, Listeners, Models, Rules и абстрактный слой Services)
- Директория Infastructure (Где у нас директория с Database)
- И конечно же Providers и файл с роутами
Ryuta Hamasaki продемонстрировал как через сервис провайдер разделять и подключать конфиги и роуты модуля: config/app.php точка подключения модулей, ну и composer.json для автолоада.
Также отличная демонстрация как общаться между модулями используя контракты, сервисы и dto.
Ну и снова PEST и простота тестирования таких модулей, а на закуску использование статических анализаторов в рамках каждого модуля.
Да друзья, еще один интересный подход в разработке ларавел проектов нам на вооружение
Polly Washburn
Digital Nomadding in the Time of COVID
Спикер поделился мыслями о жизни в период пандемии (вакцинации, qr коды и прочие прелести, мешающие продуктивно работать)! Ничего нового, нас к сожалению все это также не прошло мимо, все это мы знаем и видели).
Но продемонстрировала прекрасный вид из своей квартиры в Тенерифе на побережье, как тяжело путешествовать в этот период и прочее из жизни замечательных людей! Отличная жизнь на мой взгляд, а проблемы не такие уж и проблемы, но каждому свое! Я вот еще так ни разу и не путешествовал за пандемию, а так хотелось бы)
Craig Morris
Typing In and Out of Laravel
Спикер продемонстрировал рефакторинг данных в ларавел а именно:
- Аннотация свойств для классов моделей
- DTO объекты для реквестов, моделей и http респонсов от апи
- Касты данных в моделях в рамках DTO
- Конечно же пакет от SPATIE с DTO реализацией
- В целом как с этим жить, красота автокомплита в IDE как с этим работать
- Как радуется статический анализатор Larastan при такой структуре данных.
Небольшой доклад о DTO в Ларавел, для тех кто не знаком с этой скажем так проблемой, будет определенно интересно.
Shruti Balasa
Everything Flex
Спикер поделился чудесами работы с css flex boxes. Продемонстрировал на практике как с этим работать и как это круто и просто! Множество примеров и css кодинга. Признаюсь не эксперт в этих вопросах, я просто лениво юзаю talewind и в css не лезу)) Но если эта тема вам близка, то обязательно посмотрите данный доклад.
Kristin Collins
Dealing with Criticism
Доклад не о кодинге, а о жизни. Как справляться с критикой, как принимать критику и не уйти в депрессию! Разница между критикой и фидбеком. Рассказ из опыта как сталкивалась и боролась с этой проблемой и почему это важно для нее. Немного советов нам: исключать жесткую критику и переходить на советы, учиться культуре и общению. На моём youtube канале CutCode я тоже иногда замечаю эту проблему, но пока справляемся! Да и в целом подписчики на канале CutCode отличные! И это не может не радовать!
Aaron Francis
A Little Bit More Lambda
Сразу скажу: доклад никак не связан с Laravel Vapor! Только о Lambda (Лямбда) и немного Vercel (Вёрсел)! О том, как мы все любим монолитные проекты, но что если речь идет о дополнительных процессах - таких как сервер сайд рендеринг, генерация изображений и т.д. Тему доклада лучше бы назвать “как внедрять микросервисы в ваш монолитный проект”!
Для решения задач спикер предлагает использовать serverless решения, такие как Lambda! Автор продемонстрировал свою библиотеку laravel сайдкар для деплоя и выполнения Lambda функций! serverless решения в тренде и в особенности Lambda.
Как работать с php и laravel мы увидели в этом докладе и немного о Vercel!
Все кому интересна тема рекомендую к просмотру! После просмотра доклада у вас наверняка останется масса вопросов, но это шанс начать погружение! Я признаюсь пока не использую serverless сервисы, но уже начал смотреть в их сторону!
Marcel Pociot
Web 3.0 and Laravel
Не о криптовалюте и не о NFT! Не будет никаких финансовых советах
только о технологиях.
Что такое web 3 можете почитать в википедии! Блокчейн и множество новых слов, признаюсь я в этом ничего не смыслю! Может пора вникать? Спикер на примере Laravel проекта и логики аутентификации продемонстрировал, как применяя блокчейн технологии можно реализовать вход на сайт и решить проблемы с безопасностью раз и навсегда. Проблемы децентрализации и решение с помощью хеш токенов при транзакциях! Крайне непростой доклад (по крайней мере для меня). Рекомендую посмотреть, а я думаю пересмотрю еще раз в ближайшее время!
Taylor Otwell
Laravel Update
Как обычно Тейлор поделился проделанной работой! Похвастался:
- новым дизайном сайта Laravel.com,
- новым хайлатом кода в документации
- и конечно же трейлером о грядущем документальном фильме о ларавел!
А дальше прошелся по нововведениям в Laravel 9! Я вам само собой не буду сейчас все перечислять, так как я сделал отдельный большой ролик о всех нововведениях в Laravel 9 на канале CutCode: https://www.youtube.com/watch?v=EMecJtEgttg!
А Тейлор также нам показал новый Стартер Кит - Бриз в связке с Next.JS и новую версию админ-панели Laravel Nova!
Steve McDougall
How to do API integrations in Laravel
Доклад о том, как работать с 3rd party сервисами - с внешними api сервисами.
Огромное количество Live кодинга, где мы прошлись от и до по интеграции Github api в наш проект, как структурировать такую реализацию, как проводить тесты, как организовать фейк данные для тестов и многое другое! На мой взгляд лучший доклад на этом Laracon, крайне рекомендую к просмотру и даже если у вас проблемы с английским, то смотрите с субтитрами. Да и в целом происходящее на экране не оставляет вопросов. Это действительно полезный опыт и практика. Еще раз рекомендую, а я обязательно посмотрю еще раз!
Caleb Porzio
Building Awesome Blade Components With Alpine
Также отличный доклад о работе с blade компонентами! У меня на канале есть ролик по blade компонентам (https://www.youtube.com/watch?v=eZ6BNK8BDuk) и мы там проделывали тоже самое, и тоже на примере с элементами формы, рекомендую посмотреть!
Спикер в своем докладе организовал каждый элемент формы через blade компонент и прошелся по blade компонентам от и до, затронув все фичи. Для тех, кто еще не знаком с blade компонентами это будет крайне интересно! Автор интересно добавил динамики за счет Alpine.js и это сделало его реализацию полноценной и динамичной! Я признаюсь для себя нашел несколько новых моментов и рад, что посмотрел этот доклад, и вам также крайне рекомендую!
Freek Van der Herten
Discovering Route Discovery
Freek продемонстрировал свой новый пакет по организации роутов в Laravel приложении! Его суть в том, что нам не придется каждый раз объявлять роуты и мы можем воспользоваться его пакетом. Этот инструмент автоматически найти все роуты в директории с контроллерами на основе методов и аннотаций. Аннотациями мы кастомизируем названия роутов, тип запроса, мидлвары и так далее. Думаю те, кто знаком с symfony знают о чем речь!
Ну и помимо контроллеров также автоматически можно находить роуты на основе вьюх. Интересно ли это? На мой взгляд да! Буду ли использовать? Честно говоря, пока что не знаю, но скорее нет, чем да!
Erika Heidi
The Art of Programming
Искусство программирования! Речь о том, что программирование это не рутина, а целое искусство! Где присутствует и креативность, и опыт, и любопытство! Спикер, как творческий человек, делится своими мыслями на этот счет! Специфический доклад.
Rory McDaniel
Using Lando for local Development
Доклад о Lando. А это CLI инструмент для локальной разработки. Рассказано о контейнеризации приложения - если кратко, то аналог Docker, но с упрощением в ту сторону, что мы разрабатываем локально, и думать о том, что наша ОС изменится или обновится нам не приходится. Из плюсов: -Простота использования
-Не нужны знания докера
-Простой и единый конфиг!
Все это лэндо!
Zuzana Kunckova
The Jigsaw Challenge
В докладе речь идёт о Jigsaw - сайте-генераторе, простом в использовании! Спикер продемонстрировал некий спидран и внес изменения в свой jigsaw проект и выполнил деплой! Очень быстро говорил спикер и крайне быстро все выполнял! Видимо повлияло волнение. Ну что ж бывает с каждым!
Ashley Hindle
Laravel for millions and some…
Сразу хочу отметить качество доклада в плане звука и картинки! Спикер старался и этот момент нельзя не отметить! Но были проблемы с коннектом.
Ashley продемонстрировал свой проект в плане статистики: количества запросов, количества офисов и разработчиков. Продемонстрировал проблемы, решения и организацию. Большой доклад-презентация!
Stephen Rees-Carter
Keep Thinking Like a Hacker
На прошлом лараконе летом Стивен уже выступал с такой же темой доклада!
Думай как хакер при разработке проекта и продумывай все шаги злоумышленников наперед. Его основной посыл - безопасность превыше всего! Хешируй пароли, используй токены, не давай доступ к log-файлам и файлу окружения. Множество полезных советов плюс деплой с помощью Forge! Отличный доклад!
На этом все друзья! Мне лично этот Laracon online winter 2022 понравился! Я, признаюсь, разочаровался в предыдущем (обзор тут). Напомню, он был платный и объективно слабее нового. Но это лишь мое мнение! Особое внимание уделю докладу о интеграции внешнего API сервиса, докладе о экшн классах, о модульном подходе в разработке и блейд компонентах. Но и все остальные спикеры заслуживают внимания!
Оставить комментарий