shadowhand / cairon
该软件包已被废弃,不再维护。未建议替代软件包。
auryn 依赖注入器的配置包装器
0.1.0
2017-04-01 02:29 UTC
Requires
- php: >=5.6
- rdlowrey/auryn: ^1.4
Requires (Dev)
- phpunit/phpunit: ^5.7 || ^6.0
This package is auto-updated.
Last update: 2019-08-16 20:57:32 UTC
README
A tiny wrapper around an auryn that provides configuration capabilities. Attempts to be PSR-1, PSR-2, and PSR-4 compliant.
使用方法
cairon 的基本目的是将可调用的配置应用于 auryn。
这可以通过使用带有可调用项列表的 configure()
或使用单个可调用项的 apply()
来完成。
use Auryn\Injector; use Cairon\InjectorConfig; $injector = InjectorConfig::make() ->configure([ Acme\Injector\Foo::class, ['SomeClass::staticMethod'] function (Injector $injector) { /* ... */ } // ... ]) ->apply([$someObject, 'method']) ->injector();
可调用项
对可调用项的唯一要求是它接受一个 Auryn\Injector
实例作为第一个和唯一的参数
fn(Injector $injector): void
注意:如果提供的配置当前不可调用,则假定其为类名,并通过调用 Injector::make()
来解析。
最佳实践
使用 cairon 的首选方法是通过创建一个包含的闭包。这消除了创建配置的具体类,并推广了 auryn 只在引导过程中使用的理念。
例如,我们可以创建 config/injection/psr7.php
use Auryn\Injector; use Psr\Http\Message\ServerRequestInterface; use Zend\Diactoros\ServerRequest; use Zend\Diactoros\ServerRequestFactory; return function (Injector $injector) { $injector->alias(ServerRequestInterface::class, ServerRequest::class); $injector->delegate(ServerRequestInterface::class, 'ServerRequestFactory::fromGlobals'); };
然后在我们引导时应用它
use Cairon\InjectorConfig; $injector = InjectorConfig::make() ->configure([ require __DIR__ . '/config/injection/psr7.php', ]) ->injector();
现有注入器
如果您已经有一个 Auryn\Injector
实例,则可以将其提供给构造函数
$injector = new Injector(); $config = InjectorConfig::make($injector); assert($injector === $config->injector());
灵感
cairon 背后的理论来自elazar/auryn-configuration。这种相同的理论也被equip/config采用。我的目标是简化理论,使其成为一个可以与任何可调用项一起使用的包装器,而不需要实现具体的接口。
许可
MIT。