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 Symfony 4个捆绑包中的实例';s.yaml服务_Php_Symfony_Service_Bundle_Symfony4 - Fatal编程技术网

Php Symfony 4个捆绑包中的实例';s.yaml服务

Php Symfony 4个捆绑包中的实例';s.yaml服务,php,symfony,service,bundle,symfony4,Php,Symfony,Service,Bundle,Symfony4,我有一个包,它有接口Optimax\HealthCheckBundle\Service\healthcinterface 我需要为实现此接口的所有服务设置标记。我按照以下指令进行操作: _instanceof: Optimax\HealthCheckBundle\Service\HealthInterface: tags: ['health.service'] 当我将此指令放入config/services.yaml中时,它可以正常工作。但是,如果我将此代码放入包的配置(这是通过c

我有一个包,它有接口
Optimax\HealthCheckBundle\Service\healthcinterface
我需要为实现此接口的所有服务设置标记。我按照以下指令进行操作:

_instanceof:
  Optimax\HealthCheckBundle\Service\HealthInterface:
    tags: ['health.service']
当我将此指令放入
config/services.yaml
中时,它可以正常工作。但是,如果我将此代码放入包的配置(这是通过composer必需的)
vendor/optimax/health check/src/Resources/config/services.yaml
则无法工作。我不希望每次需要将此捆绑包复制粘贴到新项目时都将此指令复制粘贴到
services.yaml


如何将此指令移动到我的捆绑包目录中的
services.yaml
,或至少移动到项目的
config/packages
文件夹中的另一个文件中?

您是否尝试在捆绑包扩展中使用此接口自动标记所有服务,如下所示:

$container->registerForAutoconfiguration(CustomInterface::class)
     ->addTag('app.custom_tag')
;
摘自Symfony文档:

您是否尝试过在捆绑包扩展中使用此接口自动标记所有服务,如下所示:

$container->registerForAutoconfiguration(CustomInterface::class)
     ->addTag('app.custom_tag')
;
摘自Symfony文档:

为其他人详细介绍该问题

功能与定义相同。因为
\u instanceof
定义仅适用于所使用的文件

这可以防止第三方捆绑包定义影响您的整个应用程序,其定义如下:

_defaults: 
    public: true
    autowire: false

_instanceof:
    Psr\Log\LoggerAwareInterface:
        - method: setLogger
          arguments:
              - '@custom_logger'
        tags:
            - { name: monologer.log, channel: 'custom_channel' }
因此,如果您试图用
\u instanceof
标记的服务未在同一
services.yml
文件中声明,则不会添加标记


要标记在整个应用程序中实现接口的服务,您需要使用

为其他应用程序扩展该问题

功能与定义相同。因为
\u instanceof
定义仅适用于所使用的文件

这可以防止第三方捆绑包定义影响您的整个应用程序,其定义如下:

_defaults: 
    public: true
    autowire: false

_instanceof:
    Psr\Log\LoggerAwareInterface:
        - method: setLogger
          arguments:
              - '@custom_logger'
        tags:
            - { name: monologer.log, channel: 'custom_channel' }
因此,如果您试图用
\u instanceof
标记的服务未在同一
services.yml
文件中声明,则不会添加标记


要标记在整个应用程序中实现接口的服务,您需要使用

是否从捆绑包中加载扩展类中的捆绑包配置?@Jeroen确定我加载了它有趣的详细信息是捆绑包的
服务。yaml
已成功处理。我在那里为我的捆绑包的控制器添加了别名,然后在别名
@health.controller
的帮助下将该控制器注入到另一个服务中。它工作得很好,但是
\u instanceof
指令仍然不起作用。您是否从捆绑包中加载扩展类中的捆绑包配置?@Jeroen确定我加载了它有趣的详细信息是捆绑包的
服务。yaml
已成功处理。我在那里为我的捆绑包的控制器添加了别名,然后在别名
@health.controller
的帮助下将该控制器注入到另一个服务中。而且它工作得很好,但是
\u instanceof
指令仍然不起作用是的。这对我有帮助!谢谢对这对我有帮助!谢谢