Size: a a a

2020 March 26

AM

Alexander Makarov in Yii Framework 3
да
источник

DS

Dmitriy S in Yii Framework 3
Алексей R
Теперь посмотрим на \Yiisoft\Router\Middleware\ActionCaller. У меня возникают сомнения в том, что $handler надо передавать параметром в Injector
Обоснуй почему нет.
источник

А

Алексей R in Yii Framework 3
что интересно. Если аргумент без указания типа, то ->allowNull() вернёт true
источник

DS

Dmitriy S in Yii Framework 3
Алексей R
но по сути, если дело дошло до выполнения WebActionsCaller, то это значит, что предыдущие мидлвари роута уже начали работу. И кроме исключения для того, чтобы откатиться назад, вариантов то и нет
Исключение не откатит уже произошедший в цепочке действия, оно не даст выполнить остальные, то есть нарушит логику пайплайна. Когда ты вместо исключения передаешь управление NotFoundHandler, то он создает и запускает в обратную сторону цепочки ошибку 404, при этом у мидлтварей есть возможность на это среагировать.
источник

А

Алексей R in Yii Framework 3
Dmitriy S
Исключение не откатит уже произошедший в цепочке действия, оно не даст выполнить остальные, то есть нарушит логику пайплайна. Когда ты вместо исключения передаешь управление NotFoundHandler, то он создает и запускает в обратную сторону цепочки ошибку 404, при этом у мидлтварей есть возможность на это среагировать.
есть разная логика. Та, которую надо завершить, должна всегда юзать try{}catch{}finally{}
источник

А

Алексей R in Yii Framework 3
т.е. ловим исключение, завершаем действие, пропускаем исключение дальше
источник

DS

Dmitriy S in Yii Framework 3
И вообще, выбрось это слово пайплайн, я уже от тебя заразился. Мидлтвари - это не пайплайн!
источник

А

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

DS

Dmitriy S in Yii Framework 3
Алексей R
т.е. ловим исключение, завершаем действие, пропускаем исключение дальше
Ну так и сейчас есть, только без исключения. Ловим 404 ответ, завершаем действие, передаем 404 ответ дальше по цепочке и так к самому началу
источник

А

Алексей R in Yii Framework 3
модернизируя респонс так, будто бы он нормальный
источник

DS

Dmitriy S in Yii Framework 3
Алексей R
модернизируя респонс так, будто бы он нормальный
Почему? Потому что у разраба кривые руки?
источник

А

Алексей R in Yii Framework 3
будешь в каждой мидлвари проверять статус ответа?
источник

DS

Dmitriy S in Yii Framework 3
Алексей R
будешь в каждой мидлвари проверять статус ответа?
Не в каждой мидлтвари это нужно, далеко не в каждой. А вот в твоем случае в каждой мидлтвари надо все делать в try|catch|finally
источник

А

Алексей R in Yii Framework 3
Dmitriy S
Не в каждой мидлтвари это нужно, далеко не в каждой. А вот в твоем случае в каждой мидлтвари надо все делать в try|catch|finally
точно также не в каждой )
источник

DS

Dmitriy S in Yii Framework 3
Алексей R
точно также не в каждой )
Ну и чем лучше с исключениями?
источник

А

Алексей R in Yii Framework 3
а тем, что запрос не модифицированный косячным роутом дальше пойдёт
источник

А

Алексей R in Yii Framework 3
в твоём случае все аргументы роута засядут в запросе
источник

DS

Dmitriy S in Yii Framework 3
Сделал понятное представление работы стека мидл тварей. Я думаю так будет понятнее тем, кто с ними не сталкивался.
https://3v4l.org/ZWnJ3
источник

DS

Dmitriy S in Yii Framework 3
Алексей R
а тем, что запрос не модифицированный косячным роутом дальше пойдёт
Запрос модифицируется по пути туда, а не обратно
источник

А

Алексей R in Yii Framework 3
дак вот он у тебя и будет модифицирован роутером
источник