Миграция Symfony 3.4 — Как добавить пакетные сервисы? AppExtension против config.yml против services.yml

Я работаю над миграцией существующего Symfony 2.8 проект для Symfony 3.4, То, как импортируются пакетные сервисы, отличается в этих версиях Symfony, и мне интересно, каковы плюсы и минусы разных подходов.

Существующий проект был собран с использованием разных комплектов, где каждый комплект имеет свой XYBundle\Resources\services.yml файл и XYBundle\DependencyInjection\XYExtension.php файл используется для добавления конфигурации сервиса в контейнер:

class XYExtension extends Extension {
public function load(array $configs, ContainerBuilder $container) {
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);

$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
}
}

Таким образом, услуги, определенные в XYBundle\Resources\services.yml стать доступным в рамках проекта.

При создании нового пакета в Symfony 3.4 расширение не создано. Вместо services.yml добавлен в приложения config.yml

// app/config/config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
- { resource: "@XYBundle/Resources/config/services.yml" }

Тем не менее AppBundle который был создан с Symfony 3.4 скелет не имеет services.yml файл на всех. Вместо этого все классы в этом пакете автоматически становятся доступными как сервис, используя autowire а также Автоконфигурирование в пределах app/config/services.yml файл.

Я знаю что autowire был добавлен в Symfony 3.3 и что это отличный способ автоматически добавлять сервисы и добавлять к ним параметры. Это очевидно, что нет XYBundle\Resources\services.yml Файл нужен больше, когда используется autowire.

Однако, есть ли разница в использовании «старого» расширения для добавления / импорта пакета? services.yml файл и новый способ импорта в app/config/config.yml?

1

Решение

Задача ещё не решена.

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector