Size: a a a

2020 March 26

AS

Alexey Samoylov in Yii Framework 3
Dmitriy S
О каком декораторе и о каком событии идет речь?
я давал выше пример
источник

AS

Alexey Samoylov in Yii Framework 3
мидлварь ничего не знает о том, кто её вызвал
источник

AS

Alexey Samoylov in Yii Framework 3
она знает только, кого вызвать следующим
источник

AS

Alexey Samoylov in Yii Framework 3
и в этом она ничем не отличается от самого обыкновенного декоратора )
источник

DS

Dmitriy S in Yii Framework 3
Alexey Samoylov
я давал выше пример
Ссылку
источник

DS

Dmitriy S in Yii Framework 3
Alexey Samoylov
и в этом она ничем не отличается от самого обыкновенного декоратора )
Ну да и что? Это и есть вложенные декораторы. Но любая мидлтварь может завернуть петлю на любом уровне вложенности
источник

DS

Dmitriy S in Yii Framework 3
На входе стека мидлтварей всегда риквест, на выходе риспонс. Исключения бросаются в исключительных ситуациях и всегда всплывают в ErrorCatcher, который в демке и есть корневой мидлтварью.
источник

AS

Alexey Samoylov in Yii Framework 3
Смотри выше пример с RetryableException
источник

AS

Alexey Samoylov in Yii Framework 3
У тебя может быть такая цепочка мидлварей, например
источник

AS

Alexey Samoylov in Yii Framework 3
Request -> RetryableExceptionCatcher -> SomeLogger1 -> SomeLogger2
источник

DS

Dmitriy S in Yii Framework 3
Alexey Samoylov
Смотри выше пример с RetryableException
Зачем возвращаться в предыдущую мидлтварь, если авторизация в текущей, соответственно попытки все должны быть в ней же.
источник

AS

Alexey Samoylov in Yii Framework 3
Любой логгер может залипнуть, его можно заретраить, и совсем не обязательно при этом показывать ошибку
источник

AS

Alexey Samoylov in Yii Framework 3
Dmitriy S
Зачем возвращаться в предыдущую мидлтварь, если авторизация в текущей, соответственно попытки все должны быть в ней же.
Эээ, ну затем, что не потерять запрос
источник

DS

Dmitriy S in Yii Framework 3
Alexey Samoylov
Любой логгер может залипнуть, его можно заретраить, и совсем не обязательно при этом показывать ошибку
И ты первым логером два раза залогируешь?
источник

AS

Alexey Samoylov in Yii Framework 3
Dmitriy S
И ты первым логером два раза залогируешь?
Это решаемый вопрос же
источник

DS

Dmitriy S in Yii Framework 3
Alexey Samoylov
Это решаемый вопрос же
Это костыль, а не решаемый вопрос. Если проблема в мидлтвари во втором логере, то там он и должен делать повторные попытки.
источник

AS

Alexey Samoylov in Yii Framework 3
Окей, другой пример
источник

AS

Alexey Samoylov in Yii Framework 3
CustomRestResponseFormatter -> Authorizer1 -> Authorizer2
источник

AS

Alexey Samoylov in Yii Framework 3
Как прокинешь ошибку авторизации из второго авторизатора?
источник

AS

Alexey Samoylov in Yii Framework 3
И отформатируешь, и покажешь так, как это описано в спеке
источник