flotzilla / container

PHP FIG PSR-11 容器实现

2.2.2 2020-03-10 23:57 UTC

This package is auto-updated.

Last update: 2024-09-11 15:03:47 UTC


README

MIT License

容器

依赖注入 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)。请参阅许可证文件获取更多信息。