php - 如何在 Aura.Di 中容器化构建器类?

标签 php dependency-injection inversion-of-control ioc-container auraphp

如果没有 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/

相关文章:

php - 如何从我的 PHP 应用程序获取用户的 Windows 用户名?

php - Laravel TestCase 不发送授权 header (JWT token )

php - Laravel - 调用未定义的方法 TrainingFacade::save()

c# - CaSTLe Windsor Ms Adapter Core 2.0 实现

python - FastAPI:我也可以在 POST 中使用 Depends() 作为参数吗?

dependency-injection - 温莎城堡传递构造函数参数

c# - 难以通过工厂 DI 理解 ninject(或一般的 IOC 容器)?

php - 如何仅更新 Yii 中事件记录的特定字段?

php - 错误 : Class 'SplEnum' not found in PHP 7

java - 在 Guice 中获取接口(interface)的实现类型