Можно ли исключить несколько каталогов при использовании Symfony autowire?

При использовании autowire в Symfony 4 я использовал этот рабочий код:

App\:
resource: '../src/*'
exclude: '../src/{Domain,Entity,Migrations,Tests}'

Этот код исключает из автоматического подключения все эти папки:

- src/Domain
- src/Entity
- src/Migrations
- src/Tests

Это нормально, но проблема возникает, когда я хочу исключить несколько папок с одинаковыми именами, которые разбросаны по другим папкам.

Например, если у нас есть эта структура:

  • SRC / Folder1 / FolderToExclude
  • SRC / Folder2 / Folder2-1 / FolderToExclude

¿Есть ли способ исключить все папки с именем FolderToExclude?

Я уже пробовал следующий код с некоторыми небольшими изменениями:

App\:
resource: '../src/*'
exclude: '../src/{Domain,Entity,Migrations,Tests,**/FolderToExclude}'

Но это не работает 🙁

8

Решение

В Symfony 4.1. Но там это закрытая ошибка и тянуть запрос Это может сделать эту функцию доступной для Symfony 4.2!

2

Другие решения

Исключение некоторых каталогов приносит некоторую выгоду и эффективность для инициализации контейнера службы и обработки автозагрузки службы …

Но некоторые другие важные функции также возможны с помощью этой опции конфигурации исключения:

  • ИМХО, очень хороший мотив для опции «исключить», позволяет также управлять конфликтом автозагрузки PSR-4 с внутренними пакетами (в каталоге src /).
  • Исключение блока подкаталогов — это безопасный способ защиты внутреннего пространства имен пакетов в приложении SF4. Это также защищает от конфликтов автозагрузки между внутренними пакетами и пакетом приложений, меньшим частью SF4.

  • В вашем случае лучше вручную указать путь к каждой папке FolderToExclude, проверив, что между подпапками приложения нет границ.

  • Если количество исключаемых подкаталогов слишком велико для того, чтобы вы могли перечислить их по отдельности, у вас наверняка возникнут проблемы с дизайном кода или организацией, которые нужно решить вначале.

Надеюсь, что это поможет для вашего дизайнерского решения.

0

По вопросам рекламы [email protected]