Доступна оплата мастер-классов российскими и иностранными картами, ЮMoney, быстрыми платежами СБП и SberPay

PSR-7 фреймворк: PSR-15, вывод ошибок и логирование

Шестой урок серии скринкастов по изучению PSR-7 микрофреймворков в PHP. Обновляем фреймворк под принятый PSR-15, дорабатываем вывод ошибок в продакшене и в режиме отладки, изучаем композицию вместо наследования и внедряем логирование:

Исходный код на GitHub

Для более комфортного просмотра откройте скринкаст на YouTube, разверните видео до оригинального размера значком и поставьте скорость 1,75:


Содержание:

  • 00:00:00 - Вступление, цели урока
  • 00:05:51 - Обновление до PSR-15, теория
  • 00:08:51 - Причины наследования от MiddlewarePipe
  • 00:16:13 - Композиция и агрегация вместо наследования
  • 00:26:13 - Переименовывания в MiddlewareResolverTest
  • 00:30:31 - Изменение MiddlewareResolver
  • 00:35:09 - Обновление компонентов
  • 00:38:31 - Доработка Application
  • 00:45:25 - Новый NotFoundHandler
  • 00:46:43 - ApplicationTest
  • 00:47:09 - RouteMiddleware
  • 00:48:31 - С трёх аргументов на два
  • 00:49:35 - Переработка MiddlewareResolver
  • 00:50:21 - RequestHandlerMiddleware
  • 00:51:50 - CallableMiddlewareDecorator
  • 00:56:29 - DoublePassMiddlewareDecorator
  • 00:59:16 - SinglePassMiddlewareDecorator
  • 01:02:24 - Промежуточные итоги
  • 01:03:40 - LazyMiddlewareDecorator
  • 01:06:07 - MiddlewareResolverTest
  • 01:07:38 - Промежуточные итоги
  • 01:10:40 - ErrorHandlerMiddleware
  • 01:17:27 - Смешивание ответственностей в ErrorHandler
  • 01:19:31 - Гибкость кода, архитектура, теория
  • 01:43:03 - Рефакторинг ErrorHandlerMiddleware
  • 01:47:51 - ErrorResponseGenerator
  • 01:51:39 - Выделение интерфейса ErrorResponseGenerator
  • 01:52:32 - JsonErrorResponseGenerator
  • 01:53:15 - Утилиты Utils
  • 01:56:01 - Перенос универсальных классов во фреймворк
  • 01:58:49 - Применени принципа DIP из SOLID
  • 02:06:25 - Рефакторинг PrettyErrorResponseGenerator
  • 02:18:43 - Промежуточные итоги
  • 02:20:33 - Автовыбор формата вывода ошибки
  • 02:24:55 - Отвязка от zend-diactoros
  • 02:32:06 - Разнесение генераторов, теория
  • 02:34:47 - DebugErrorResponseGenerator
  • 02:39:09 - Проверка работы
  • 02:40:58 - Панель Whoops
  • 02:45:06 - Создание WhoopsErrorResponseGenerator
  • 02:49:28 - Проверка работы
  • 02:51:42 - Перенос в папку фреймворка
  • 02:55:16 - Логирование ошибок
  • 02:58:22 - Класс Logger
  • 03:00:47 - Интерфейс Logger, реализации FileLogger и DbLogger
  • 03:02:27 - PSR-3: Logger Interface
  • 03:04:09 - Библиотека Monolog
  • 03:08:06 - ErrorHandlerTest
  • 03:10:58 - Подключение monolog
  • 03:17:33 - Отлов ошибок 404, ResponsLoggerMiddleware
  • 03:24:18 - Разделение ответственностей, теория
  • 03:28:58 - Рефакторинг
  • 03:32:12 - LogErrorListener
  • 03:34:35 - Промежуточные итоги
  • 03:36:50 - Разделение конфигурации для продакшена и разработки
  • 03:45:13 - Вынесение анонимных функций в классы-фабрики
  • 03:49:18 - Кэширование, ConfigAggregator
  • 03:57:00 - Промежуточные итоги
  • 04:00:26 - Обзор получившегося фреймворка
  • 04:02:53 - Обзор Zend Expressive
  • 04:40:46 - Подведение итогов

  1. Структура и работа с HTTP
  2. Контроллеры и маршрутизация
  3. Middleware и Pipeline
  4. Контейнер внедрения зависимостей
  5. Шаблонизаторы и вёрстка
  6. Обновление до PSR-15, вывод ошибок и логирование
  7. Консольные команды, базы данных и ресурсы

Задавайте вопросы в комментариях. Заранее спасибо и до встречи в следующем видео!


Авторам курсов: Если пользуетесь услугами сервиса «Инфоконтроль» для блокировки складчин, то проверьте свои свежие списки блокировок на lumendatabase.org в выдаче Google. После неудачных обновлений в сервисе смешались чёрные и белые списки и под жалобы в Google попали сотни безобидных адресов и наш паблик в VK. Иначе на вас будут ругаться как на меня здесь. Сейчас сотрудники сервиса немного нервничают, но лишние жалобы отменяют.

Программистам сервисов: Пишите тесты, чтобы я, как пользователь ваших сервисов, не поседел раньше времени от таких новостей.

Комментарии

 

Сергей

Дмитрий спасибо за Ваш труд, когда планируете выпустить следующий урок?

Ответить

 

Алексей

Присоединяюсь к предыдущему комментатору в плане благодарности - идеальная подача материала в купе с глубоким осмыслением, рассматриваемых вопросов. А так же присоединюсь и к вопросу о планируемом сроке выхода следующего скринкаста. От себя добавлю - будет ли рассматриваться RequestHandlerRunner в ключе того что переписали код под PSR-15, да и SapiEmitter получил статус deprecated?

Ответить

Оставить комментарий

Войти | Завести аккаунт | Войти через


(никто не увидит)





Можно использовать теги <p> <ul> <li> <b> <i> <a> <pre>