flotzilla / container
PHP FIG PSR-11 容器实现
2.2.2
2020-03-10 23:57 UTC
Requires
- php: ^7.1
- psr/container: ^1.0
Requires (Dev)
- phpstan/phpstan: ^0.12.11
- phpunit/phpunit: ^7
This package is auto-updated.
Last update: 2024-09-11 15:03:47 UTC
README
容器
依赖注入 PHP FIG PSR-11 容器实现
需求
php > 7.1
安装
通过 Composer
$ composer require flotzilla/container
用法
使用构造函数参数初始化服务容器
$container = new \flotzilla\Container\Container( [ 'EmptyTestClassDI' => EmptyTestClass::class, // class without dependencies, init by classname 'TestClassDI' => [TestClass::class, 'message'], // class with constructor string parameter 'TestClassDI2' => function () { // closure, that returns new class instance return new TestClass('test'); }, 'ClosureDI' => function ($x, $y) { // closure, that returns sum result return $x + $y; }, 'TestClassWithDependecyDI' => [TestClassWithDependecy::class, 'TestClassDI'] // class with dependency of another service ] );
或使用设置器
use \flotzilla\Container\Container; $container = new Container(); $container->set('LoggerDI', function () { return new Logger();}); $container->set('ClosureDI', function ($x, $y) { return $x + $y;}); $container->set('EmptyTestClassDI', ClassWithoutConstructor::class); $container->set('ClassDIWithDependency', [SomeClass::class, 'message']); $container->set('AnotherClassWithDIDependency', [TestClass::class, 'LoggerDI']);
在代码中获取您的组件
$logger = $container->get('LoggerDI');
使用参数获取您的闭包
$container->set('ClosureDI', function ($x, $y) { return $x + $y;}); $logger = $container->getWithParameters('ClosureDI', [1, 2]); // will return 3
测试
$ composer test
许可证
MIT 许可证(MIT)。请参阅许可证文件获取更多信息。