kaszko / class-resolver-bundle
该包最新版本(v1.0.3)没有可用的许可信息。
将类解析器组件集成到Symfony
v1.0.3
2022-03-30 19:24 UTC
Requires
- php: >=5.5.0
- kassko/class-resolver: ^1.0
- symfony/framework-bundle: ^2.5|^3.0|^4.0|^5.0
Requires (Dev)
- phpunit/phpunit: ~4.4
- dev-master
- 1.0.x-dev
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- v0.3.3.1
- v0.3.3.0
- v0.3.2.0
- v0.3.1.0
- v0.3.0.1-alpha
- v0.3.0.0-alpha
- 0.2.0-alpha.8
- 0.2.0-alpha.7
- 0.2.0-alpha.6
- 0.2.0-alpha.5
- 0.2.0-alpha.4
- 0.2.0-alpha.3
- 0.2.0-alpha.2
- 0.1.2-alpha
- 0.1.1-alpha
- 0.1.0-alpha
- dev-kassko-compat-sf4and5
- dev-kassko-try
- dev-kassko-new_resolvers
This package is not auto-updated.
Last update: 2024-09-26 07:05:09 UTC
README
将 class-resolver
集成到Symfony的Bundle。有关本地特性的信息,请参阅 class-resolver 文档
。
安装
您可以使用composer安装此组件:composer require kassko/class-resolver-bundle:some_version
您还需要将Bundle注册到您的内核中
public function registerBundles() { $bundles = array( new Kassko\Bundle\ClassResolverBundle\KasskoClassResolverBundle(), ); }
使用类解析器的两种不同方式
语义配置示例
kassko_class_resolver: container_adapter_class: Kassko\Bundle\ClassResolverBundle\Adapter\Container\SymfonyContainerAdapter # default resolver_aliases: alias_one: my_container_resolver_service_one # - {alias_one: my_container_resolver_service_one} resolvers: container: [my_container_resolver_service_one, my_container_resolver_service_two] # or # - { resolver_service: my_container_resolver_service_one, resolver_aliases: [alias_two] } # - { resolver_service: my_container_resolver_service_two } map: map_one: resolver_service: my_map_resolver_service_one items: "My\\Namespace": my_service_one "My\\Namespace\\Two": my_service_two # or # - { class: "My\\Namespace", service: my_service_one } # - { class: "My\\Namespace\\Two", service: my_service_two } factory_adapter: - resolver_service: my_factory_adapter_resolver_service_one adapted_service: my_adapted_service_one support_method: supports resolve_method: resolve - resolver_service: my_factory_adapter_resolver_service_two adapted_service: my_adapted_service_two support_method: supports resolve_method: resolve # or with the following syntax - {resolver_service: adapter_one, adapted_factory: resolver_one} # etc static_factory_adapter: - resolver_service: my_static_factory_adapter_resolver_service_one adapted_class: my_static_resolver_class support_method: supports resolve_method: resolve - resolver_service: my_static_factory_adapter_resolver_service_two adapted_class: my_static_resolver_class support_method: supports resolve_method: resolve # or with the following syntax - {resolver_service: adapter_two, adapted_factory: resolver_two} # etc
您可以在语义配置中定义一些类解析器,并在您的服务配置文件中使用它们
<service id="some_service_a" class="stdClass"> <argument id="my_map_resolver_service_one" type="service" /> </service> <service id="some_service_b" class="stdClass"> <argument id="my_factory_adapter_resolver_service" type="service" /> </service> <service id="some_service_c" class="stdClass"> <argument id="my_static_factory_adapter_resolver_service" type="service" /> </service>
您还可以动态定义一些类解析器,并将它们与从您的服务配置文件中提供的 [class, service] 对配对
您将服务如 [class, service] 对注册到您动态创建的解析器中
<service id="some_service_a" class="stdClass"> <argument id="my_container_resolver_service_one" type="service" /> <!-- create a resolver on the fly identified by its group --> <tag name kassko_class_resolver.add group="a_group_name_choosen_by_you"> </service> <service id="some_service_b" class="stdClass"> <argument id="my_container_resolver_service_one" type="service" /> <!-- use the resolver previously created in the service `some_service_a` --> <tag name kassko_class_resolver.add group="a_group_name_choosen_by_you"> </service>
然后将适当的解析器(通过其组标识)注入到相关服务中
<service id="some_service_c" class="stdClass"> <tag name kassko_class_resolver.inject group="a_group_name_choosen_by_you"> </service>
组是一种不操作某些服务的方式。
这种方式的优势在于在不更改语义配置的情况下添加新的解析器,并且只需要使用一个文件(服务配置文件)即可工作。
有关此功能的更多信息,请参阅 更详细的文档
最后,您可以使用在语义配置中定义的一些类解析器,并从您的服务配置文件中提供它们
您将服务如 [class, service] 对注册到已存在的解析器 my_container_resolver_service_one
中
<service id="some_service_a" class="stdClass"> <tag name kassko_class_resolver.add service="my_container_resolver_service_one"> </service>
将解析器 my_container_resolver_service_one
注入需要它的服务中
<service id="some_service_a" class="stdClass"> <argument id="my_container_resolver_service_one" type="service" /> </service>