如果没有 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');
关于php - 如何在 Aura.Di 中容器化构建器类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59837141/