Size: a a a

2020 March 02

Д

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

Д

Дмитрий in Yii Framework 3
Dmitriy S
Билдер там и останется. Вернуть пока публичный конструктор контейнеру?
верни, а билдер зачем?
источник

DS

Dmitriy S in Yii Framework 3
Дмитрий
верни, а билдер зачем?
Ну так декораторы будут, но только для дебагера.
источник

Д

Дмитрий in Yii Framework 3
вообще твой билдер в идеале мог бы просто сделать в методе build() подстановку всех приватных definitions+providers и вернуть новый объект контейнера, вот так:
function build():
return new Container($this->defs, $this->provs);
источник

Д

Дмитрий in Yii Framework 3
а то, что билдер в конструкторе принимает уже контейнер - совсем не свойственно для типичного билдера
источник

T

TradersVE in Yii Framework 3
Дмитрий
а то, что билдер в конструкторе принимает уже контейнер - совсем не свойственно для типичного билдера
👍
источник

DS

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

Д

Дмитрий in Yii Framework 3
без сэтеров. билдер создаст новый контейнер с заранее заполненными definitions+providers
$b = new ContainerBuilder();
$b->addDefinitions(...)
$b->addProviders(...)
$container = $b->build();

или я не пониманию ничего в билдерах?)
источник

T

TradersVE in Yii Framework 3
https://github.com/PHP-DI/PHP-DI this package seems to me one of the best, and you can use the injection by autowired or annotations.
источник

DS

Dmitriy S in Yii Framework 3
Дмитрий
без сэтеров. билдер создаст новый контейнер с заранее заполненными definitions+providers
$b = new ContainerBuilder();
$b->addDefinitions(...)
$b->addProviders(...)
$container = $b->build();

или я не пониманию ничего в билдерах?)
А, ты об этом. Так я уже объяснял, цель была - сделать приватным конструктор контейнера.
источник

DS

Dmitriy S in Yii Framework 3
Ну и без сеттера у тебя не получится юзать билдер с разными контейнерами, либо в сам метод build передавать.
источник

Д

Дмитрий in Yii Framework 3
этот билдер должен создавать только 1 контейнер по тем определениям, что мы ему передали. если хочешь композитный контейнер, то придется по стартинке $c = new CompositeContainer, $c->attach() :)
источник

Д

Дмитрий in Yii Framework 3
и кстати, тот $parentContainer по сути не parent, а просто любой контейнер, разве нет?
источник

DS

Dmitriy S in Yii Framework 3
Дмитрий
этот билдер должен создавать только 1 контейнер по тем определениям, что мы ему передали. если хочешь композитный контейнер, то придется по стартинке $c = new CompositeContainer, $c->attach() :)
Один, но разных типов. Di\Container League\Container  и тд
источник

Д

Дмитрий in Yii Framework 3
Dmitriy S
Один, но разных типов. Di\Container League\Container  и тд
один и одного типа - Yii\Container :)
источник

DS

Dmitriy S in Yii Framework 3
Дмитрий
один и одного типа - Yii\Container :)
Тогда не выйдет декорировать PSR-11 совместимые контейнеры автоматически
источник

Д

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

DS

Dmitriy S in Yii Framework 3
Долго объяснять. Забей)
источник

Д

Дмитрий in Yii Framework 3
Dmitriy S
Тогда не выйдет декорировать PSR-11 совместимые контейнеры автоматически
что-то ты меня запутал. декорировать нужно только сервисы. а композитный контейнер должен работать без  этих декораторов. или нет?
источник

Д

Дмитрий in Yii Framework 3
а если хочешь декорировать контейнер - это совсем другая функциональность
источник