Size: a a a

2020 March 18

AM

Alexander Makarov in Yii Framework 3
потому что:

1. тайпхинт
источник

А

Алексей R in Yii Framework 3
можно предложить ещё выдавать обхекты, которые будут в контейнере WeakRef. Это что-то среднее между синглтоном и фабрикой
источник

AM

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

А

Алексей R in Yii Framework 3
Alexander Makarov
вместо зависимости ты не передашь weak reference
возвращает контейнер нормальный объект, WeakRef хранит у себя
источник

А

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

А

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

AM

Alexander Makarov in Yii Framework 3
а от чего он умирать-то будет?
источник

AM

Alexander Makarov in Yii Framework 3
на него ссылка есть из сервиса
источник

AM

Alexander Makarov in Yii Framework 3
а не из контейнера
источник

А

Алексей R in Yii Framework 3
напримр запросил юзера в контроллере. Пока он там висит, ты уже запросил юзера в рендере несколько раз. Это всё отрабатывает как синглтон. Потом рендер сделан, страницу возвращаешь респонсом. Тут обхект юзера умирает, т.к. нигде не хранится
источник

А

Алексей R in Yii Framework 3
Alexander Makarov
на него ссылка есть из сервиса
тогда этот сервис не безстейтовый
источник

AM

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

А

Алексей R in Yii Framework 3
а раз так, то А - этот сервис лежит не в том контейнере или Б - этот сервис тоже в WeakContainer
источник

AM

Alexander Makarov in Yii Framework 3
Алексей R
напримр запросил юзера в контроллере. Пока он там висит, ты уже запросил юзера в рендере несколько раз. Это всё отрабатывает как синглтон. Потом рендер сделан, страницу возвращаешь респонсом. Тут обхект юзера умирает, т.к. нигде не хранится
по мне так это ужасно
источник

AM

Alexander Makarov in Yii Framework 3
непредсказуемо
источник

DS

Dmitriy S in Yii Framework 3
Алексей R
не, так не прокатит, ибо где-то должен же объект оседать. А если он в контейнере Weak и в дебагере Weak, то он уничтожится сразу после завершения работы конструктора ))
источник

AM

Alexander Makarov in Yii Framework 3
есть у меня цепочка middleware, например
источник

AM

Alexander Makarov in Yii Framework 3
я хочу пропустить по ним что-то из контейнера и модифицировать
источник

AM

Alexander Makarov in Yii Framework 3
при этом после каждого шага убиваю того, кто шаг сделал
источник

AM

Alexander Makarov in Yii Framework 3
ну... гипотетически
источник