Как контейнировать класс строителя в Aura.Di? - PullRequest
1 голос
/ 21 января 2020

Без DI-контейнера вы обычно делаете что-то вроде этого:

$foo = (new FooBuilder)
->setA('a')
->setB('b')
->build();

// where $foo becomes an instance of Foo class

Как вы регистрируете / контейнеризуете что-то подобное в Aura.Di ?

1 Ответ

1 голос
/ 22 января 2020

Нашел это. Для тех, кого это волнует, это lazyGetCall ()

Например, если у вас есть что-то вроде этого:

$foo = (new FooBuilder)
->setA('a')
->setB('b')
->build();

Вы можете поместить его в контейнер следующим образом:

$builder = new \Aura\Di\ContainerBuilder;
$di = $builder->newInstance();
$di>setters['FooBuilder']['setA'] = 'a';
$di>setters['FooBuilder']['setB'] = 'b';
$di->set('FooBuilder', $di->lazyNew('FooBuilder'));
$di->set('Foo', $di->lazyGetCall('FooBuilder', 'build'));

Затем вы можете позвонить в другое место так: $fooInstance = $di->get('Foo');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...