Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用类常量作为绑定参数服务的标记?_Php_Symfony_Symfony4_Symfony Dependency Injection - Fatal编程技术网

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%'

发帖后一分钟,问题就这样结束了。似乎可以接受。让我们看看其他人是否有更直接的方法。