Пятиминутка PHP
2.87K subscribers
334 photos
26 videos
826 links
Подкаст о PHP, DBA, архитектуре, DevOps. Авторское мнение о современных трендах в веб-разработке и интересные беседы с гостями. Темы про СУБД, Linux, DevOps

Автор: @petrmyazin
Download Telegram
Начинаем текстовую трансляцию Laracon Online. Вещание идёт через Zoom, перемотать назад нельзя, так что первый доклад про "Глубокое погружение в очереди" я пропустил. Сейчас будет The final Laravel Service Container talk
Пока очень базовая информация про Service Container: докладчик показал как работает автоматический binding и как вручную можно сконфигурировать (bind) определенный класс (сервис)
Плавно переходим к Laravel-specific пониманию контейнера: фасады и глобальная функция resolve
Что удобно: можно подставить в контейнер фейковую реализац сервиса в процессе тестирования, например Mail::fake(), под капотом происходит замена (swap) реального сервиса на фейковый
Зачем нужен Service Container? Слайд:
Также докладчик предлагает пройти его платный видео-курс Mastering PhpStorm за пол цены самого PhpStorm! https://masteringphpstorm.com
В общем рассказ про контейнер получился лёгким пересказом документации, без инсайдов. Сейчас перерыв 20 минут. Следующая тема "Routing Larave: Let's find how Route:: works and where we can reuse it for our own technical challenges.»
Итак, роуты! Несколько способов регистрации:
Кстати, у команды artisan route:list есть параметр --compact
А ещё можно указать конкретные колонки для route:list с помощью параметра --columns
Route::fallback если ни одно правило не подошло. Инструкция fallback должна идти в самом конце, после описания всех прочих роутов
Немного деталей о процессе создания отдельного роута
Интересный факт: просле того, как $request прошел через все middleware он заново помещается в контейнер (заменяет старый `request`)
Новая информация: в процессе поиска походящего роута fallback роуты отделяются в отдельную коллекцию и перемещаются в конец. До этого докладчик говорил, что нам самим надо следить, чтобы fallback был в конце. Надо бы проверить…
После того, как найден подходящий роут, запускаются middleware относящиеся к данному роуту
Важная часть магии роутинга в Laravel - это Route Model Binding для автоматической загрузки и подстановки модели https://laravel.com/docs/8.x/routing#route-model-binding
Легаси из старых версий Laravel: если в классе контроллере есть метод callAction то будет запущен именно он, а не указанный в роутах метод
После компиляции паттерна роута получается хитрая регулярка:
Best practice: не использовать группы с префиксом, а писать полный путь явно
Одна кодовая база на несколько серверов, например api и web: в этом случае роуты можно регистрировать по условию if/else
Финальный слайд, аналогично прошлому докладу, автор продаёт свою книгу о недокументированных секретах Laravel! https://laravelsecrets.com