Что бы я сделал, это использовал класс расширения в вашем пространстве имен DependencyInjection пакета.Это должно быть что-то вроде:
<?php
namespace YourNamespace\YourBundle\DependencyInjection;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;
use Symfony\Component\DependencyInjection\Definition;
/**
* Provide a DIC extension to support configurable cheeta subscription adapters.
*/
class YourNamespaceYourBundleExtension extends Extension
{
/**
* {@inheritDoc}
*/
public function load( array $configs, ContainerBuilder $container )
{
// Some stuff with configuration...
$configuration = new Configuration();
$config = $this->processConfiguration( $configuration, $configs );
// Load service configuration
$loader = new Loader\XmlFileLoader( $container, new FileLocator(__DIR__.'/../Resources/config' ) );
$loader->load( 'services.xml' );
$container->findDefinition('doctrine.orm.default_entity_manager')->addMethodCall('setExample', array(/* Eventual parameters */));
}
}
Возможно, есть способ сделать то же самое, используя наследование сервисов, но я никогда не пробовал.Однако в классе Extension вы можете делать то же, что и в файле service.xml, а также использовать логику php и семантическую конфигурацию для выполнения более сложных задач.