lapaz / aura-di-ext
Aura.Di 词汇扩展
0.2.0
2017-06-08 14:22 UTC
Requires
- php: ^5.6||^7.0
- aura/di: ^3.0
- lapaz/plain-php: ^0.1.0
Requires (Dev)
- phpunit/phpunit: ^6.0||^5.5
This package is auto-updated.
Last update: 2024-09-05 18:56:40 UTC
README
- 在调用
$di->lazyNew()
和$di->newFactory()
之后,可选地启用->modifiedBy()
和->modifiedByScript()
。 - 新增方法
->newLocator()
用于创建返回服务的纯可调用对象。 - 在
->lazyRequire()
和lazyInclude()
中添加可选参数$params = []
。
(newLocator()
是 lazyGet()
的非延迟版本。)
与 ContainerConfig::modify()
不同,每次 ->get()
的第一次调用都会按需调用每次修改。
之前
$di->set('routerContainer', $di->lazy(function () use ($di) { $routerContainer = $di->newInstance(\Aura\Router\RouterContainer::class, [], [ 'setLoggerFactory' => function () use ($di) { return $di->get('logger'); }, // Don't use ->lazyGet() because the returned lazy object would be evaluated before injection. ]); $map = $routerContainer->getMap(); $map->get('index', '/'); // ... return $routerContainer; ));
之后
$dix = ContainerExtension::createFrom($di); $di->set('routerContainer', $dix->lazyNew(\Aura\Router\RouterContainer::class, [], [ 'setLoggerFactory' => $dix->newLocator('logger'), ])->modifiedBy(function ($routerContainer) { $map = $routerContainer->getMap(); $map->get('index', '/'); // ... ));
需求/包含
$dix = ContainerExtension::createFrom($di); $di->params[\Aura\Dispatcher\Dispatcher::class]['objects'] = $dix->lazyRequire(__DIR__ . '/objects.php', [ 'di' => $di, // 'anotherConfig' => ... ]);
您可以在 objects.php
中使用 $di
返回配置的延迟实例。