Php 如何使用类常量作为绑定参数服务的标记?
我已经标记了一组服务,这些服务在我的配置中实现了如下相同的接口:Php 如何使用类常量作为绑定参数服务的标记?,php,symfony,symfony4,symfony-dependency-injection,Php,Symfony,Symfony4,Symfony Dependency Injection,我已经标记了一组服务,这些服务在我的配置中实现了如下相同的接口: //services.yml 服务: _实例: App\SomeInterface: 标记:[!php/const-App\SomeInterface::TAG] (其中,App\SomeInterface::TAG的值是非常唯一的标识符) 我希望重用此值以如下方式绑定此参数: // services.yaml services: _defaults: autowire: true autoco
//services.yml
服务:
_实例:
App\SomeInterface:
标记:[!php/const-App\SomeInterface::TAG]
(其中,App\SomeInterface::TAG
的值是非常唯一的标识符
)
我希望重用此值以如下方式绑定此参数:
// services.yaml
services:
_defaults:
autowire: true
autoconfigure: true
public: false
bind:
$fooStrategies: !tagged !php/const App\SomeInterface::TAG
但当我这样做时,我得到一个空的可倒带生成器
相反,我可以这样做,使用常量的文本值:
bind:
$fooStrategies: !tagged 'very_unique_identifier'
。。。而且它可以按预期工作,RewindableGenerator
内置了所有必要的服务
如何在两个位置都使用PHP常量,这样就不必在不同的位置重复该值?显然,这不是什么大问题,但如果可能的话,我想避免它。您应该能够使用该值配置参数
!php/const-App\SomeInterface::TAG
,然后在service.yml中使用参数名
parameters.yml
parameters:
interfaceTag: !php/const App\SomeInterface::TAG
然后
services.yml
services:
_defaults:
autowire: true
autoconfigure: true
public: false
bind:
$fooStrategies: !tagged '%interfaceTag%'
发帖后一分钟,问题就这样结束了。似乎可以接受。让我们看看其他人是否有更直接的方法。