为了账号安全,请及时绑定邮箱和手机立即绑定

自动配置替换导入的服务

自动配置替换导入的服务

PHP
GCT1015 2023-06-24 17:05:02
当我在主配置中导入服务时:imports:    - { resource: services/attribute_loaders.yaml }包含文件中的服务将替换为自动配置的版本,因此我错过了所有配置的标签:services:  App\Infrastructure\Bridge\Doctrine\EventListener\AttributeLoader\OrderAttributeLoader:    autowire: true    tags:      - name: 'doctrine_mongodb.odm.event_listener'        entity: 'App\Infrastructure\Bridge\Doctrine\EventListener\AttributeLoader\OrderAttributeLoader'        event: 'postLoad'作为解决方法,我已将我的服务从自动配置中排除。有没有办法把服务分解成几个文件?
查看完整描述

1 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

你就是这么做的。


如果您要使用多个文件来配置服务,则无法两次定义相同的服务。


您的定义需要足够具体,这样它们才不会重叠。


如果您要使用广泛的resource设置,则需要添加所有相应的排除项,以便在不同文件中定义的服务在此之前不会被定义:


services:

  App\:

     resource: '../src/*'

     exclude:

       - '../src/Infrastructure/Symfony/DependencyInjection'

       - '../src/Infrastructure/Symfony/Kernel.php'

       - '../src/Tests'

       - '../src/Messenger'

src/Messenger属于命名空间的上的服务App\Messenger可以在不同的文件上独立定义:


例如这样的事情:


# messenger_services.yaml

services:

    _defaults:

        autowire: true      # Automatically injects dependencies in your services.

        autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.

        public: false


    

    App\Messenger\CommandHandler\:

        resource: '../../src/Messenger/CommandHandler/*'

        tags:

          - {name: 'messenger.message_handler', bus: command.bus}


    App\Messenger\EventHandler\:

        resource: '../../src/Application/EventHandler/*'

        tags:

          - {name: 'messenger.message_handler', bus: event.bus}


查看完整回答
反对 回复 2023-06-24
  • 1 回答
  • 0 关注
  • 84 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信