Открой безлимитный доступ ко всем скринкастам и получай большие скидки на все наши мероприятия:
Бесплатный
0/ мес.

Ограниченный доступ
только к Free-видео

Активен
Подписчик
500/ мес.

Безлимитный доступ
ко всем скринкастам

Принимаем оплату российскими и иностранными картами, системами МИР Pay и Tinkoff Pay.

Фабрики запросов и ответов PSR-17

После перехода на интерфейсы PSR-7 мы уже понимаем, как делать переносимыми функции, которые работают с переданным им Request-ом. Но пока не знаем, что делать с функциями, которые у себя создают ответ Response.

Поэтому помимо инверсии контроля за запуском приложения и инверсии зависимостей сегодня рассмотрим инверсию контроля за созданием зависимостей. Это нам позволит отвязаться от зависимости от конкретных классов и понять причины появления PSR-17.

Помимо этого рассмотрим заблуждение многих PHP-програмистов при написании анонимных функций. Почему класс для них назван Closure и являются ли все анонимные функции замыканиями.

  • 00:01:47 Зависимость от класса Response
  • 00:05:39 Подготовка кода
  • 00:07:17 Инверсия контроля запуска приложения
  • 00:10:00 Инверсия зависимостей компонентов
  • 00:10:27 Инверсия контроля за созданием зависимостей
  • 00:11:47 Приём заготовки Response
  • 00:13:12 Приём конфигурации
  • 00:16:41 Постоянные и непостоянные параметры
  • 00:18:06 Конфигурируемая функция
  • 00:18:50 Именованные и анонимные функции
  • 00:20:00 Отличие лямбды от замыкания
  • 00:22:43 Контекст текущего объекта
  • 00:27:47 Заблуждение PHP-программистов
  • 00:29:57 Конструкторы для функций
  • 00:34:25 Унификация вызовов
  • 00:36:06 Функциональный класс
  • 00:38:05 Неудобства передачи Response
  • 00:38:58 Использование фабрики
  • 00:43:26 Написание фабрик для HTTP Message
  • 00:48:34 Перемещение фабрики fromGlobals
  • 00:51:30 Вынесение общих интерфейсов
  • 00:53:03 Промежуточный итог
  • 00:54:19 Обзор PSR-17 HTTP Factories
  • 00:55:51 Переход на PSR-17
  • 00:59:55 Переход на готовую реализацию
  • 01:02:16 Использование в тестах
  • 01:03:45 Удаление устаревших настроек
  • 01:05:38 Хэлперы для заполнения контента
  • 01:09:03 Когда это уместно
  • 01:11:04 Обзор результата
Скрытый контент (код, слайды, ...) для подписчиков. Открыть →
Дмитрий Елисеев
elisdn.ru
Комментарии (7)
Владимир Перепеченко
2023-02-22 10:50

Здравствуйте, Дмитрий

Отдельная благодарность за разоблачение мифов про closure/lambda! Это - мутная тема, плохо освещенная в интернетах.

Вообще, этот курс получился шикарным. Узнаю разные фишечки, о которых сам не догадался бы.

Плюс ваши вербальные формулировки и определения стали предельно чеканными и выверенными.

Вопрос: Я не понял разницы между request и server request. И, соответственно, между request factory и server request factory. Если она есть, то в чём?

Ответить
Дмитрий Елисеев
2023-05-23 18:07

Я не понял разницы между request и server request.

Request обычно описывает исходящий запрос, который мы отправляем через HTTP-клиент:

$request = $requestFactory->createRequest('GET', 'https ://api.vk.com/...');

$response = $httpClient->send($request);

А ServerRequest описывает входящий запрос, пришедший к нам на сарвер:

$request = ServerRequestFactory::gromGlobals($_SERVER, $_POST, $_FILES, ...);

echo $request->getMethod();

Отдельная благодарность за разоблачение мифов про closure/lambda! Это - мутная тема, плохо освещенная в интернетах.

Анонимки в PHP пришли из функциональных языков. Там эта тема освещена хорошо.

Ответить
Arunas
2023-02-26 09:58

спасибо

Ответить
Герман
2023-07-06 19:15

Большое спасибо, Дмитрий! Когда следующая серия?)

Ответить
Кирилл
2023-11-08 17:58

Отличная серия) Для меня как новичка, просто супер!) Дмитрий, подскажите пожалуйста, планируется ли продолжение серии и когда ожидать выход новых видео?)

Ответить
Николай
2023-11-10 07:15

Отличные скринкасты. Тоже присоединяюсь к вопросу о продолжении серии.

Ответить
Андрей
2024-01-30 08:06

Небольшая опечатка в названиях глав эпизода: "Переход на PSR-15" вместо "Переход на PSR-17"

Ответить
Зарегистрируйтесь или войдите чтобы оставить комментарий

Или войти через:

Yandex
MailRu
GitHub
Google