Size: a a a

2021 January 26

AM

Alexander Makarov in Yii Framework 3
Dmitriy S
1. И стейт здесь - любой объект в конструкторе. Можешь разбить сейчас в демке контейнер и ты увидишь насколько мало у тебя останется дефинишинов в безстейтовом контейнере, то есть, просто теряется смысл рисета, проще рисетнуть весь контейнер.
Не любой. Только тот, что со стейтом.
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
То есть все сторонние со стейтом сразу впролёте.
И еще, сервисы со стейтом могут работать и без сброса в LRA, если имеют соответсвующую архитектуру, более того, это как раз оптимально. Можно взять в виде примера роутер и мидлваре-диспетчер. В нем есть стейт, но роуты не перестраиваются каждый запрос и стек не ребилдится.
источник

AM

Alexander Makarov in Yii Framework 3
Dmitriy S
И еще, сервисы со стейтом могут работать и без сброса в LRA, если имеют соответсвующую архитектуру, более того, это как раз оптимально. Можно взять в виде примера роутер и мидлваре-диспетчер. В нем есть стейт, но роуты не перестраиваются каждый запрос и стек не ребилдится.
Поэтому я и не топлю за полный ресет. Это не оптимально.
источник

AM

Alexander Makarov in Yii Framework 3
Надо возможность пометить то, что хочется ресетить.
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
Не любой. Только тот, что со стейтом.
Все что в конструкторе в большинстве случаев сохраняется в приватных свойствах, и с точки зрения контейнера - это стейт.
источник

AM

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

AM

Alexander Makarov in Yii Framework 3
Что ресет надо как-то рекурсивно резолвить — это проблема.
источник

DS

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

AB

Alexander Borisov in Yii Framework 3
Че-т мне кажется с автовайрингом и без компиляции это нереально…
источник

AM

Alexander Makarov in Yii Framework 3
Dmitriy S
А пометить можно интерфейсом и дать сервису самому рисетнуться.  А если просто пометить, то экземпляры сервисов будут залипать в приватных свойствах других сервисов.
В теории можно по цепочке обресетить и другие.
источник

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
Alexander Borisov
Че-т мне кажется с автовайрингом и без компиляции это нереально…
Что именно? Рекурсивный ресет?
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
Точно потянет?
Я на днях поделю собранный контейнер в демке и посмотрим сколько сервисов будет для рисета
источник

AB

Alexander Borisov in Yii Framework 3
Alexander Makarov
Что именно? Рекурсивный ресет?
да
источник

AM

Alexander Makarov in Yii Framework 3
Dmitriy S
Я на днях поделю собранный контейнер в демке и посмотрим сколько сервисов будет для рисета
ОК.
источник

AM

Alexander Makarov in Yii Framework 3
Вполне реально. Циклические ссылки мы считаем же без билда. Тут сходно. Только флаг учитывается.
источник

AB

Alexander Borisov in Yii Framework 3
А, ну да
источник

AB

Alexander Borisov in Yii Framework 3
Как вариант оборачивать такие сервисы в прокси объект и при ресете - просто подменять декорируемый объект. Таким образом у зависимых сервисов объект подменится сам
источник

AM

Alexander Makarov in Yii Framework 3
Alexander Borisov
Как вариант оборачивать такие сервисы в прокси объект и при ресете - просто подменять декорируемый объект. Таким образом у зависимых сервисов объект подменится сам
Полноценный прокси в PHP невозможен для final без интерфейса.
источник