cheevauva / pdic
属性依赖注入容器
1.1.7
2021-02-09 10:40 UTC
Requires
- php: >=5.6
- psr/container: 1.0.0
Requires (Dev)
- php: >=5.6
- phpunit/phpunit: 5.6.3
- pimple/pimple: v3.2.3
README
PDIC
一个轻量级但强大的通过公共属性进行依赖注入的容器,使用依赖关系图
安装
在您的项目中使用 PDIC 之前,请将其添加到 composer.json 文件中
./composer.phar require cheevauva/pdic "1.1.*"
使用
声明服务
服务是一个对象,它作为更大系统的一部分执行某些操作。服务的示例:数据库连接、模板引擎或邮件程序
$map = [ '?session_storage' => SessionStorage::class, '?session' => Session::class, SessionStorage::class => [ '^1' => '@sessionId', ], Session::class => [ '^1' => '?session_storage' ], ]; $container = new \PDIC\Container($map, [ 'sessionId' => 'SESSION_ID', ]);
由于对象仅在您获取它们时才会创建,因此定义顺序无关紧要。
使用特定服务非常简单
$container->get('session');
上述调用大致等同于以下代码
$storage = new SessionStorage('SESSION_ID'); $session = new Session($storage);
声明工厂服务
默认情况下,每次您获取服务时,PDIC 都返回相同的实例。如果您希望对于所有调用都返回不同的实例,请按以下方式声明依赖关系图
$map = [ '?session_storage' => SessionStorage::class, '?session' => '*' . Session::class, SessionStorage::class => [ '^1' => '@sessionId', ], Session::class => [ '^1' => '?session_storage' ], ];
现在每次调用
$container->get('session');
返回一个新的 Session 实例
声明参数
定义参数可以简化您容器中实体设置的过程。参数在创建容器实例时传递
$container = new \PDIC\Container([ '?filesystem' => Filesystem::class, Filesystem::class => [ '^1' => '@basePath', ] ], [ 'basePath' => __DIR__ . '/', ]);