如果没有 DI 容器,您通常会执行以下操作:
$foo = (new FooBuilder)
->setA('a')
->setB('b')
->build();
// where $foo becomes an instance of Foo class
你如何在Aura.Di中注册/容器化类似的东西?
如果没有 DI 容器,您通常会执行以下操作:
$foo = (new FooBuilder)
->setA('a')
->setB('b')
->build();
// where $foo becomes an instance of Foo class
你如何在Aura.Di中注册/容器化类似的东西?
找到了。对于那些关心的人,它是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');