Size: a a a

2020 March 28

Д

Дмитрий in Yii Framework 3
Nex Otaku
Делаю так
можно просто сделать экшен, который называется
beforeAction
источник

Д

Дмитрий in Yii Framework 3
https://github.com/yiisoft/yii-demo/pull/73
это можно посмотреть?
источник

NO

Nex Otaku in Yii Framework 3
Дмитрий
можно просто сделать экшен, который называется
beforeAction
Я не в одном контроллере делаю, а для всего приложения. Для мониторинга времени выполнения экшена через таймеры пинбы )

Мне удобнее в бутстрапе на события хендлеры прицепить. Код приложения не меняется )
источник

AS

Alexey Samoylov in Yii Framework 3
В бутстрапе ж нет инстанса приложения
источник

AS

Alexey Samoylov in Yii Framework 3
Надо отдельный бехавиор делать
источник

AS

Alexey Samoylov in Yii Framework 3
И в конфиге к аппу цеплять
источник

Д

Дмитрий in Yii Framework 3
видимо, мне не развиделось.
@yiiliveext видел мой PR? там просто возвращаем что угодно из контроллера и оно потом конвертится. сейчас твой ПР не делает ничего, что достойно того подхода, который сделал я.
из минусов:
1. свой респонс. кому он нужен? никто не будет это использовать, кроме малого круга лиц. кто-то будет использовать чужие реализации респонса - nyholm, например.
решение: подружить форматтер с интерфейсом, а не с кастомной реализацией.
2. под каждый экшен создавать инстанс форматтера - очень накладно.
решение: стейтлес мидлвар.
3. ну и по мелочи: файлы не структурированы, нет стриктов (@roxblnfk  привет), нет тестов.

я бы советовал слить моё творение и поверх него сделать форматтер с кастомным конфигурированием.

опрос: что удобнее?
1. return $this->responseFactory->createResponse()->withData($items); (и еще нужно заинъектить ResponseFactory)
2. return $items; (ничего не нужно инъектить)
источник

AM

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

AM

Alexander Makarov in Yii Framework 3
@xepozz там немного не так:

1. Свой респос - это обёртка над не своим. Оборачивает любой кастомный.
2. Экшн за один запрос выполняется один. Один new - не накладно.
3. Это proof of concept.

Твой тоже надо посмотреть. Знаю, что он был раньше. Я обязательно до него доберусь. Скорее всего сегодня.
источник

А

Алексей R in Yii Framework 3
Дмитрий
видимо, мне не развиделось.
@yiiliveext видел мой PR? там просто возвращаем что угодно из контроллера и оно потом конвертится. сейчас твой ПР не делает ничего, что достойно того подхода, который сделал я.
из минусов:
1. свой респонс. кому он нужен? никто не будет это использовать, кроме малого круга лиц. кто-то будет использовать чужие реализации респонса - nyholm, например.
решение: подружить форматтер с интерфейсом, а не с кастомной реализацией.
2. под каждый экшен создавать инстанс форматтера - очень накладно.
решение: стейтлес мидлвар.
3. ну и по мелочи: файлы не структурированы, нет стриктов (@roxblnfk  привет), нет тестов.

я бы советовал слить моё творение и поверх него сделать форматтер с кастомным конфигурированием.

опрос: что удобнее?
1. return $this->responseFactory->createResponse()->withData($items); (и еще нужно заинъектить ResponseFactory)
2. return $items; (ничего не нужно инъектить)
привет
источник

DS

Dmitriy S in Yii Framework 3
Дмитрий
видимо, мне не развиделось.
@yiiliveext видел мой PR? там просто возвращаем что угодно из контроллера и оно потом конвертится. сейчас твой ПР не делает ничего, что достойно того подхода, который сделал я.
из минусов:
1. свой респонс. кому он нужен? никто не будет это использовать, кроме малого круга лиц. кто-то будет использовать чужие реализации респонса - nyholm, например.
решение: подружить форматтер с интерфейсом, а не с кастомной реализацией.
2. под каждый экшен создавать инстанс форматтера - очень накладно.
решение: стейтлес мидлвар.
3. ну и по мелочи: файлы не структурированы, нет стриктов (@roxblnfk  привет), нет тестов.

я бы советовал слить моё творение и поверх него сделать форматтер с кастомным конфигурированием.

опрос: что удобнее?
1. return $this->responseFactory->createResponse()->withData($items); (и еще нужно заинъектить ResponseFactory)
2. return $items; (ничего не нужно инъектить)
У форматтера есть свой интерфейс. Если ты не заметил - это твои проблемы. Остальное сэмдарк объяснил.
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
Что-то стало хуже?
Нельзя заголовки выставить при отложенном рендериге в эмиттере. Обращение к стриму идет уже после того, как отправлны заголовки в эмиттере, соответственно форматтер отрабатывает вхолостую. Но даже если дергать любой безобидный метод стрима, то все равно заголовки не сделаются, потому как заголовки устанавливаются в клоне.
источник

AM

Alexander Makarov in Yii Framework 3
То есть форматтер не может выставить content type?
источник

AM

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

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
То есть форматтер не может выставить content type?
Может но поздно. Единственный вариант отказаться от мидлтвари DeferredResponseFormatter. Но так мы много теряем.
источник

DS

Dmitriy S in Yii Framework 3
В общем для посмотреть ветка с DeferredStream вот
https://github.com/yiiliveext/yii-demo/tree/def-stream
источник

DS

Dmitriy S in Yii Framework 3
В общем я еще раз обновил основной пр по форматтеру, переименовал классы и откатил некоторые изменения,@samdark глянь еще раз, да я буду переносить в yii-web
источник

Д

Дмитрий in Yii Framework 3
Dmitriy S
У форматтера есть свой интерфейс. Если ты не заметил - это твои проблемы. Остальное сэмдарк объяснил.
Причем тут интерфейс?
источник

Д

Дмитрий in Yii Framework 3
Alexander Makarov
@xepozz там немного не так:

1. Свой респос - это обёртка над не своим. Оборачивает любой кастомный.
2. Экшн за один запрос выполняется один. Один new - не накладно.
3. Это proof of concept.

Твой тоже надо посмотреть. Знаю, что он был раньше. Я обязательно до него доберусь. Скорее всего сегодня.
2. Создание мидваров происходит после матчинга или при бутстрапе приложения?
1. Это лишнее даже при обёртке. Нужно работать без этого. Это уже не дебагер, и некоторые вещи не нужны в проде. Например, проксирование респонса
источник

DS

Dmitriy S in Yii Framework 3
Дмитрий
2. Создание мидваров происходит после матчинга или при бутстрапе приложения?
1. Это лишнее даже при обёртке. Нужно работать без этого. Это уже не дебагер, и некоторые вещи не нужны в проде. Например, проксирование респонса
2. Смотря каких. Основного группового будет после матчинга.
1. Что лишнее? Это декорирование и оно используется по назначению. Твое решение - это откровенная лажа, оно не решает вообще ничего, это временный костыль.
источник