Size: a a a

2020 September 27

Д

Дмитрий in Yii Framework 3
источник

Д

Дмитрий in Yii Framework 3
Andrii Vasyliev
> has возвращает true, но на самом деле в контейнере еще нет сконфигурированного инжектора.
> Это бага контейнера, которую никто чинить не хочет
В чём бага? has возвращает то что и должен возвращать в соответствии с описаним psr интерфейса
Я интерпретирую это как баг, потому что сейчас наш контейнер - хитрый проныра. Если у него нет знания о запрашиваемом ID, то он начинает автоматически резолвить это.
Такое поведение указано в PSR?

Проще говоря, вот этот тест должен фейлить, т.к. контейнер совсем пустой и ничего не должен знать.
А сейчас он начинает искать классы и пытается их создать.
источник

Д

Дмитрий in Yii Framework 3
Хотел покодить, в итоге 3 часа дебажил эти контейнеры ваши :)
источник

AV

Andrii Vasyliev in Yii Framework 3
в PSR написано что если контейнер может создать класс то has должен возвращать true, а именно так и работает наш контейнер, ему не обязательно иметь определение чтоб создать объект класса
источник

AV

Andrii Vasyliev in Yii Framework 3
Дмитрий
Хотел покодить, в итоге 3 часа дебажил эти контейнеры ваши :)
то место которое ты нашёл - известно, что проблема из-за него, но это существенная фича
https://github.com/yiisoft/factory/pull/35
за неё можно побороться, а не бросать при первых же проблемах
источник

AM

Alexander Makarov in Yii Framework 3
Andrii Vasyliev
я так и подумал что идея такая. Только почему такая уверенность? Типа заинжектить как-то по другому совершенно невозможно?
Я считаю что так. Нам другого не надо. Ну и это не единственный случай. Не инжектор так ещё что-то.
источник

AV

Andrii Vasyliev in Yii Framework 3
Вобщем других инжекторов или опций у инжектора не ожидается?
источник

AM

Alexander Makarov in Yii Framework 3
Нет, не ожидается.
источник

AV

Andrii Vasyliev in Yii Framework 3
тогда можно прибивать гвоздями
источник

AM

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

AS

Alexey Samoylov in Yii Framework 3
Andrii Vasyliev
в PSR написано что если контейнер может создать класс то has должен возвращать true, а именно так и работает наш контейнер, ему не обязательно иметь определение чтоб создать объект класса
has MUST return true if an entry identifier is known to the container and false if it is not
источник

AS

Alexey Samoylov in Yii Framework 3
Known - значит дефиниция в контейнер загружена
источник

NS

Nurbek Suyunov in Yii Framework 3
Hi guys.How can i prepare advanced to product mode
источник

AV

Andrii Vasyliev in Yii Framework 3
Alexey Samoylov
has MUST return true if an entry identifier is known to the container and false if it is not
что значит known? ;)


https://github.com/php-fig/container/blob/master/src/ContainerInterface.php#L23-L27


тут более явно написано
мы уже переделывали has по этому поводу
источник

DS

Dmitriy S in Yii Framework 3
Andrii Vasyliev
что значит known? ;)


https://github.com/php-fig/container/blob/master/src/ContainerInterface.php#L23-L27


тут более явно написано
мы уже переделывали has по этому поводу
class_exists входит в known
источник

AV

Andrii Vasyliev in Yii Framework 3
Именно так
источник

RM

Rustam Mamadaminov in Yii Framework 3
Nurbek Suyunov
Hi guys.How can i prepare advanced to product mode
Is this a question about yii3?
источник

А

Алексей R in Yii Framework 3
Alexander Makarov
Нет, не ожидается.
А жаль. Не умерла во мне надежда, что параметр конструктора инжектора будет variadic (это не break bc фича)
источник

Д

Дмитрий in Yii Framework 3
Dmitriy S
class_exists входит в known
А не должен. Получается, что контейнер не конечный, а резиновый.
Как по мне, так себе дизайн.
источник

DS

Dmitriy S in Yii Framework 3
Дмитрий
А не должен. Получается, что контейнер не конечный, а резиновый.
Как по мне, так себе дизайн.
Я предлагал сделать опцию strict mode для тех кого так не устраивает
источник