evaneos / dic-it
又一依赖注入容器
v2.2.1
2013-11-01 00:00 UTC
Requires
- symfony/yaml: ~2.8|~3.0
Requires (Dev)
- guzzle/guzzle: ~3.8
- league/phpunit-coverage-listener: ~1.0
- ocramius/proxy-manager: ~1.0
- phpunit/phpunit: ~4.0
- squizlabs/php_codesniffer: ~2.9
- zendframework/zend-json: ~2.2
- zendframework/zend-soap: ~2.2
- zendframework/zend-xmlrpc: ~2.2
Suggests
- guzzle/guzzle: To support RESTful remote object activation
- ocramius/proxy-manager: To support injection of runtime generated proxies
- zendframework/zend-json: To support JSON-RPC remote object activation
- zendframework/zend-soap: To support SOAP remote object activation
- zendframework/zend-xmlrpc: To support XML-RPC remote object activation
README
DIC-IT是一个简单的依赖注入容器,具有可扩展的激活和注入策略。
配置
推荐的配置是在您的仓库根目录下创建一个config文件夹。所有配置都基于YAML文件。
示例YAML文件
parameters: MyParameter: 'Some parameter value' MyOtherParameter: 42 MyParameters: nested_level: foo : foo bar : bar baz : foobar classes: MyServiceName: class: \Fully\Qualified\ClassName arguments: [ @MyDependency, %MyParameter, %MyParameters.nested_level, 'Hard-coded value', $container, $env.ENV, $const.ROOT_PATH ] MyDependency: class: \Fully\Qualified\DependencyClassName props: MyProperty: %MyOtherParameter
参考
您可以在类定义中注入不同类型的引用。您可以得到其他服务实例、参数、容器本身、环境变量和常量值。
- @ServiceName : 获取该定义的实例
- %param : 获取容器中定义的参数
- $container : 获取容器本身
- $env.ENV_NAME : 获取环境变量
- $const.CONST_NAME : 获取全局定义的常量值
使用includes
可以将配置拆分为多个文件,以简化依赖项管理
includes: - relative/file.yml - relative/another-file.yml classes: ...
这允许您将参数与服务定义分开,例如。
默认对象生命周期
默认情况下,所有对象都是作为非单例对象创建的(这肯定会改变),因此每次容器解析引用时,都会创建请求对象的新实例。
管理循环依赖
默认情况下,由于默认对象生命周期,循环依赖处理得不好(堆栈溢出...)。要为特定对象启用循环依赖,至少必须将两个对象中的一个定义为单例。但这不会产生预期的结果,因此强烈建议将循环依赖中涉及的两个对象都定义为单例。