Size: a a a

2020 March 03

AM

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

DS

Dmitriy S in Yii Framework 3
Контейнер нt смотрел?
источник

DS

Dmitriy S in Yii Framework 3
Вижу, смотрел. Поотвечал.
источник
2020 March 04

AM

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

DS

Dmitriy S in Yii Framework 3
Вынести время за трай - ок, хоть и не критично. Остальное - неверно.
источник

AM

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

AM

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

AM

Alexander Makarov in Yii Framework 3
там реально нужно игнорить и скрывать все исключения, которые прилетели от исходного сервиса?
источник

AM

Alexander Makarov in Yii Framework 3
И про контейнер явно верно.
источник

T

TradersVE in Yii Framework 3
@samdark This is almost implemented, everything you define in the constructor of the controller is defined by di with autowired.
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
там реально нужно игнорить и скрывать все исключения, которые прилетели от исходного сервиса?
Да, это делается для логирования ошибки и гарантированно одинакового поведения без и с прокси. Это пришло с практикой и верно на 100%. Кстати, именно благодаря этому я узнал из лога дебагера, что контейнер при резолве параметра с дефолтным значнием типа класс сначала пытается инстанцировать объект, а если не получилось, то ловит исключение, игнорит его и подставляет дефолтное значение. Это все было видно по логу, в код я не заглядывал.
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
И про контейнер явно верно.
Что именно верно про контейнер?
источник

DS

Dmitriy S in Yii Framework 3
Если ты о композитном контейнере и хочешь вынести withRootContainer (переименовать на delegateLookup?), то я не против. Хотя, как по мне, сейчас синтаксис проще.
Сейчас:
public function index(ContainerInterface $container): ResponseInterface
{
   $compositeContainer = new CompositeContainer();
   $compositeContainer->attach($container);
   $localContainer = new Container($this->getDefinitions());
   $compositeContainer->attach($localContainer, true);
}

После
public function index(ContainerInterface $container): ResponseInterface
{
   $compositeContainer = new CompositeContainer();
   $compositeContainer->attach($container);
   $localContainer = new Container($this->getDefinitions());
   $localContainer =  $localContainer->withRootContainer($compositeContainer);
   $compositeContainer->attach($localContainer);
}
источник

DS

Dmitriy S in Yii Framework 3
И да, я предлагаю сделать методы set, setMultiple, addProvider, addProviders приватными.
источник

AM

Alexander Makarov in Yii Framework 3
Dmitriy S
И да, я предлагаю сделать методы set, setMultiple, addProvider, addProviders приватными.
Ну сейчас они нет. Я смотрю то что есть...
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
Ну сейчас они нет. Я смотрю то что есть...
Сейчас я вынужден был так сделать на случай если кто-то захочет нарушить интерфейс
источник

AM

Alexander Makarov in Yii Framework 3
Dmitriy S
Да, это делается для логирования ошибки и гарантированно одинакового поведения без и с прокси. Это пришло с практикой и верно на 100%. Кстати, именно благодаря этому я узнал из лога дебагера, что контейнер при резолве параметра с дефолтным значнием типа класс сначала пытается инстанцировать объект, а если не получилось, то ловит исключение, игнорит его и подставляет дефолтное значение. Это все было видно по логу, в код я не заглядывал.
Не понял... Раньше у нас при вызове метода кидало исключения. С прокси нет. Только логирует.
источник

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
Dmitriy S
Оно кидает исключение! Посмотри код метода, я тебе на гитхабе его прямо в комментарии привел.
Я тоже 3v4l привёл. Не кидает.
источник