简体   繁体   English

Symfony 4 自动装配排除忽略子文件夹

[英]Symfony 4 autowiring exclude ignores subfolders

Assume following directory structure:假设以下目录结构:

/src
  /DTO
    /Factory
      /Collection

I want to exclude all classes, including classes from subdirectories of /DTO directory我想排除所有类,包括/DTO目录子目录中的类

In my services file I do:在我的服务文件中,我这样做:

services:
  _defaults:
    autowire: true
    autoconfigure: true
    public: false

    App\:
    resource: '../src/*
    exclude:
      - '../src/DTO/*'

This leads to:这将导致:

Symfony\Component\DependencyInjection\Exception\RuntimeException : Cannot autowire service App\DTO\Factory\Collection\MyCollection

If this service placed in DTO folder directly - then autowiring works.如果此服务直接放置在DTO文件夹中 - 那么自动装配工作。

Can I specify the exclude expression in any way to include subfolders?我可以以任何方式指定排除表达式以包含子文件夹吗?

To exclude everything from DTO folder use:要从DTO文件夹中排除所有内容,请使用:

    App\:
      resource: '../src/*'
      exclude:
        - '../src/DTO'

ie w/o * symbol即不带*符号

I found a solution to exclude not only classes placed directly in folder, but also subfolders with two asterisk signs ( ** ).我找到了一个解决方案,不仅可以排除直接放置在文件夹中的类,还可以排除带有两个星号 ( ** ) 的子文件夹。

Here is the example of a valid configuration:以下是有效配置的示例:

services:
  _defaults:
    autowire: true
    autoconfigure: true
    public: false

    App\:
    resource: '../src/*
    exclude:
      - '../src/DTO/**'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM