Size: a a a

2020 February 19

AM

Alexander Makarov in Yii Framework 3
Алексей R
В общем:

process() оставить, добавить MiddlewareInterface
Выбрасывает исключение, если стек пуст

dispatch() переименовать на handle(), вернув интерфейс RequestHandlerInterface
выбрасывает исключение, если нет $nextHandler

addMiddleware()
переименовать в add()
из конструктора убрать массив мидлварей, он только путает

зачем нужен MiddlewareInterface? чтобы помещать один трубопровод в другой, достраивать трубопровод из отрезков
Откуда они берутся?
У меня такой юзкейс: есть два приложения, отличающиеся доменом на 3-м уровне. Для каждого из них отличается низ стека пайплайна, а начало общее. Поэтому в зависимости от домена берётся нужный пайплайн и к нему достраивается пайплайн общий

зачем нужен RequestHandlerInterface? Да потому что по факту диспетчер это и есть RequestHandlerInterface - ты туда даёшь запрос, получаешь ответ
по-моему, это нехорошая возможность...
источник

AM

Alexander Makarov in Yii Framework 3
гибко, но можно сделать очень адово и непонятно зачем
источник

AM

Alexander Makarov in Yii Framework 3
кейс можно разрулить группами в роутере
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
гибко, но можно сделать очень адово и непонятно зачем
Это он типа темплейт диспетчера сделать хочет, чтобы шарить между приложениями😏
источник

AM

Alexander Makarov in Yii Framework 3
Dmitriy S
Это он типа темплейт диспетчера сделать хочет, чтобы шарить между приложениями😏
Что значит "шарить"? Приложения либо отдельно, либо это одно приложение...
источник

AM

Alexander Makarov in Yii Framework 3
Вот про RequestHandlerInterface да, тут согласен. Но там не выходит так (у меня не выходило).
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
Что значит "шарить"? Приложения либо отдельно, либо это одно приложение...
Ну типа одинаковая часть у всех есть. Подключаем сессию, обработчик ошибок...
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
Вот про RequestHandlerInterface да, тут согласен. Но там не выходит так (у меня не выходило).
Что не выходит, в данном случае он там лишний в текущей архитектуре.
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
Что значит "шарить"? Приложения либо отдельно, либо это одно приложение...
Для этих целей можно Chain использовать, он просто не в курсе) Там только отрефакторить его немного надо.
источник

А

Алексей R in Yii Framework 3
Dmitriy S
Для этих целей можно Chain использовать, он просто не в курсе) Там только отрефакторить его немного надо.
Chain я видел, причём тут шарить тоже не понял
источник

DS

Dmitriy S in Yii Framework 3
Алексей R
Chain я видел, причём тут шарить тоже не понял
Ну ты же сам пишешь

У меня такой юзкейс: есть два приложения, отличающиеся доменом на 3-м уровне. Для каждого из них отличается низ стека пайплайна, а начало общее. Поэтому в зависимости от домена берётся нужный пайплайн и к нему достраивается пайплайн общий
источник

А

Алексей R in Yii Framework 3
ну это не шарить
источник

А

Алексей R in Yii Framework 3
это тупо dry )
источник

DS

Dmitriy S in Yii Framework 3
А что делать, ты общую часть в Chain оборачиваешь и можешь одним addMiddleware() добавлять общую часть во все приложения
источник

А

Алексей R in Yii Framework 3
Dmitriy S
А что делать, ты общую часть в Chain оборачиваешь и можешь одним addMiddleware() добавлять общую часть во все приложения
тык может что-то здесь лишнее? либо Chain либо диспетчер
источник

А

Алексей R in Yii Framework 3
наплодили одинковых вещей )
источник

А

Алексей R in Yii Framework 3
названия только разные
источник

DS

Dmitriy S in Yii Framework 3
Нет, единственная обязанность диспетчера - запустить воронку.
источник

А

Алексей R in Yii Framework 3
это делает приложение,вызывая метод RequestHandlerInterface::handle(ServerRequestInterface $request): ResponseInterface
источник

DS

Dmitriy S in Yii Framework 3
Ща открою код, гляну что там)
источник