techdata/context-di-bundle

Symfony2 库,允许进行上下文感知的服务。

安装: 12

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 2

开放问题: 5

类型:symfony-bundle

1.0.0 2015-06-30 22:16 UTC

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

包含的提供者

很快将添加一些用于常见用例的提供者。