Size: a a a

Пятиминутка PHP

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