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 返回配置的延迟实例。