objective-php / services-factory
Objective PHP 的服务容器
v3.1.0
2019-12-18 12:37 UTC
Requires
- php: >=7.3
- container-interop/container-interop: ^1.1
- doctrine/annotations: ~1.4.0
- objective-php/config: ^3.0.0
- objective-php/docu-mentor: ^1.0
- objective-php/matcher: ^1.0.0
- objective-php/primitives: ^1.3.0
- phpdocumentor/reflection-docblock: ^4.3
Requires (Dev)
- codeception/codeception: ^3.0
- phpunit/phpunit: <8.2
- zendframework/zend-servicemanager: ^2.7.6
README
描述
Services Factory 是一个尝试以更简单、更易读的方式处理依赖注入,与其他可用的实现相比。
该组件的主要关注点集中在
- 减少 DI 机制所需的代码和配置
- 保留构建组件及其依赖注入时的代码洞察
Services Factory 被分割成几个组件。理解这些组件有助于更好地理解组件的整体逻辑
- 服务规范
- 由 ObjectivePHP\ServicesFactory\Specification\ServiceSpecificationInterface 定义
- 这是如何规范化服务定义,以便 Factory 能够理解它们
- 组件提供了两种默认规范类型
- PrefabServiceSpecification
- 最简单的服务!
- 存储预先实例化的对象(或任何其他值)
- ClassServiceSpecification
- 这允许将类定义为服务的模板
- 可以获取构造函数参数("params" 属性)
- 可以使用设置器设置可选依赖("setters" 属性)
- 默认情况下自动注入
- PrefabServiceSpecification
- 两种类型都需要 "id" 参数
- 后者还支持 "static" 属性,以指示每次请求服务时是否应返回相同的实例
- 服务构建器
- 与服务规范类型相关联,构建器负责根据规范实际构建服务
- 组件还捆绑了两个构建器,每个类型一个
- PrefabServiceBuilder
- ClassServiceBuilder
- Factory
- 中心对象,用于注册服务规范和构建器
- 一旦设置,Factory 就会通过其
get(string $serviceId)
方法向应用程序提供服务
文档
组件文档位于 docs 子文件夹