techdata / context-di-bundle
Symfony2 库,允许进行上下文感知的服务。
Requires
- php: >=5.3.2
- symfony/symfony: >=2.3.0
This package is not auto-updated.
Last update: 2024-09-14 18:36:54 UTC
README
允许进行上下文依赖注入。
概念
概念是通常需要知道请求的上下文。上下文可以由一个或多个不同的方面组成,如用户、客户、领域、地理位置、用户IP、待处理的报价存在等。
该组件通过允许自定义提供者和消费者被定义,然后对其进行标记,表明它们需要什么或可以提供什么,来构建在现有的 Symfony DI 系统之上。
系统直到需要时才会加载上下文。
存在缓存,因此每次服务想要使用上下文时,不需要重新计算上下文。
消费者
消费者服务必须实现 TechData\ContextDiBundle\Interfaces\ContextConsumerInterface 接口,然后使用名为 "context_consumer" 的一个或多个标签对其进行标记,它想要消费。该标签需要有一个 "context_name" 属性,这是一个字符串,指定它正在寻找的上下文类型。
提供者
提供者服务必须实现 TechData\ContextDiBundle\Interfaces\ContextProviderInterface 接口,然后使用名为 "context_provider" 的单个标签对其进行标记,它想要提供。该标签需要有一个 "context_name" 属性,这是一个字符串,指定它正在提供的上下文类型。
缓存
存在一个缓存,在尝试解析上下文之前会检查该缓存。如果上下文已经在缓存中,则将使用它。默认的缓存服务按请求缓存上下文。
配置
需要指定的上下文类型(或“注册”)需要在主要配置文件(“config.yml”)中指定。这是通过指定一个接口或类名来完成的,当解析上下文时,提供者将提供该接口或类。这确保只有某些上下文可用,上下文类型对消费者来说是已知的,它们需要使用这些上下文。示例。
tech_data_context_di:
available_contexts:
user: Vendor\Bundle\Interfaces\UserInterface
customer: Vendor\Bundle\Entity\CustomerInterface
可选地,可以将缓存类型切换到实现 TechData\ContextDiBundle\Interfaces\ContextCacheInterface 的不同缓存服务。这可以通过在配置中指定缓存服务名称来完成,如下所示。默认为 "tech_data_context_di.cache.single_request",这是一个按请求的缓存。
tech_data_context_di:
available_contexts:
user: Vendor\Bundle\Interfaces\UserInterface
customer: Vendor\Bundle\Entity\CustomerInterface
cache_service: some.custom.cache.service.name
包含的提供者
很快将添加一些用于常见用例的提供者。