亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

自動配置替換導入的服務

自動配置替換導入的服務

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 關注
  • 114 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號