lapaz/

aura-di-ext

Aura.Di 词汇扩展

0.2.0 2017-06-08 14:22 UTC

This package is auto-updated.

Last update: 2024-09-05 18:56:40 UTC


README

Build Status

  • 在调用 $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 返回配置的延迟实例。