2016-07-05 2 views
0

У меня есть пакет с services.yml где определение службы использует параметр, содержащийся в этом файл для параметра class, например, так:Symfony не уважая первостепенный класс аргумента для тестовой среды

parameters: 
    application.servicename.class: Application\Service\ServiceName 

services: 
    application.servicename: 
     class: %application.servicename.class% 

Теперь я хочу переопределить класс службы для моей тестовой среды. Однако переопределение параметра в config_test.yml не приводит к созданию объекта переопределяющего класса.

Добавление следующее config_test.yml:

parameters: 
    application.servicename.class: Application\Mock\Service\ServiceName 

... до сих пор вызывает услуга instantieted от Application\Service\ServiceName. Если я попытаюсь передать application.servicename.class в качестве аргумента в службу и выгрузить его в конструкторе, отображается значение превышения Application\Mock\Service\ServiceName.

Почему Symfony не уважает переоцененную стоимость для класса обслуживания при подготовке сервиса?

ответ

0

Я думаю, что вы ищете класс Extension в вашем Bundle:

http://symfony.com/doc/current/cookbook/bundles/extension.html

Я думаю, что вы могли бы быть в состоянии изменить приоритеты погрузочных конфигурационные файлы Вот пример реализации

public function load(array $configs, ContainerBuilder $container { 

    $configuration = new Configuration(); 
    $config = $this->processConfiguration($configuration, $configs); 
    $container->setParameter('your.config.parameter', $config['your']['config']['parameter']); 

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

} 
2

Вы должны двигаться

parameters: 
application.servicename.class: Application\Service\ServiceName 

От services.yml к config.yml becasuse в моей opninion переопределения значения paremeter в config_test.yml значения, которое вы имеете в services.yml

0

Как оказалось, эта проблема не имеет отношения к Конфигурация загрузки Symfony, а скорее предположение о том, что загружен неправильный класс. Это предположение было вызвано тем фактом, что вызов метода как исходного сервиса (и макетного его расширения) был отмечен как закрытый.

Если бы это не было проблемой, я верю, что я пытался сделать должно быть возможным, реф http://symfony.com/doc/2.8/cookbook/bundles/override.html#services-configuration

К сожалению, чтобы тратить свое время.

Смежные вопросы