PSR-7 фреймворк: Middleware и Pipeline

Третий урок серии скринкастов по изучению PSR-7 микрофреймворков в PHP. Сегодня рассмотрим крайне полезную тему реализации промежуточного слоя посредников Middleware поверх контроллеров и написания трубопровода Pipeline для их вызова:

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

  1. Структура и работа с HTTP
  2. Контроллеры и маршрутизация
  3. Middleware и Pipeline
  4. Контейнер внедрения зависимостей
  5. Шаблонизаторы и вёрстка

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

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

Комментарии

 

Alexpts

Подскажи есть ли реализации для конвертирования Yii1 request/response в PSR-7?
Может быть есть группа людей, которым это тоже актуально будет, чтобы с ними скооперироваться и написать такой конвертор.

Ответить

 

Дмитрий Елисеев

Для Yii1 вряд ли кто-то этим занимается.

Ответить

 

Юрий

Спасибо дмитрий
не успеваю смотреть..
а еще нужно понять что к чему ))

Ответить

 

Алмат Жандаулетов

Дмитрий.
Может сделаете курс по Continuos Integration?
В частности интересует, как вы разворачиваете проекты в продакшен. Как запускаете автотесты? ЧерезTravisCI or Gitlab, Bamboo or Jenkins? Как вы откатываете изменения, если что то пошло не так? Сколько у вас окружении при разработке Deveopment, Staging, Production? Как они все взаимодействую? Какие друг от друга зависимости?
И т.д.

Сделайте пож-та курс. Даже платный. Тема очень интересная

Ответить

 

Яромир

Поддерживаю. Тема про CI была бы очень кстати.

Ответить

 

Андрей

Присоединяюсь... Если бы Вы сделали такой курс за разумную цену, было бы очень круто...

Ответить

 

Александр Кулик

Поддерживаю! Очень нужная тема

Ответить

 

ivanopol

Присоединяюсь!

Ответить

 

seoonly.ru

огонь))) с наступающим!

Ответить

 

Александр Кулик

Дорбрый день. Когда ожидать продолжения?

Ответить

 

Юлия

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

У меня вопрос касательно урока.

Стандарт PSR-15 уже приняли и в связи с этим выпустили новую версию zend-stratigility. Класс MiddlewarePipe сделали final, поэтому мы не можем от него отнаследовать класс Application.
Как вы посоветуете в таком случае реализовать класс Application? Или обойтись без него,используя непосредственно класс MiddlewarePipe? Как в таком случае работать с нашими Middleware? Метод pipe принимает только Psr\Http\Server\MiddlewareInterface, значит нужно переписать существующие классы, что бы они имплементировали этот интерфейс?

Ответить

 

smoc

Юлия, выходи за меня!

Ответить

 

Дмитрий Елисеев

Да, 15 марта обновили. Наследование можно поменять на композицию:

class Application implements MiddlewareInterface
{
    public function __construct(...) {
         $this->pipe = new MiddlewarePipe(...);
    }
}

и вместо parent::pipe() вызывать $this->pipe->pipe().

Ответить

 

Александр

Как я понимаю этим не ограничиваются изменения. Нужно же ещё изменить резолвер, чтобы он возвращал MiddlewareInterface который принимает MiddlewarePipe::pipe, ну и что-то сделать с самими посредниками, либо реализовать в них MiddlewareInterface либо написать какие то адаптеры/декораторы для них.

Что в данном случае выглядит предпочтительнее?

Ответить

 

GEKKO

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

Так же хотелось бы увидеть ответ на вопрос Юлии, по поводу stratigility и PSR-15

Спасибо.

Ответить

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

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


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



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