Getting rid of the info array of doom for service definitions
parent
1d1c62b25b
commit
f954878ccc
|
@ -13,49 +13,42 @@ class DrupalBundle extends Bundle
|
||||||
{
|
{
|
||||||
public function build(ContainerBuilder $container)
|
public function build(ContainerBuilder $container)
|
||||||
{
|
{
|
||||||
$definitions = $this->getDefinitions();
|
$container->register('dispatcher', 'Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher')
|
||||||
|
->addArgument(new Reference('service_container'));
|
||||||
foreach ($definitions as $id => $info) {
|
$container->register('resolver', 'Symfony\Component\HttpKernel\Controller\ControllerResolver');
|
||||||
$info += array(
|
$container->register('http_kernel', 'Symfony\Component\HttpKernel\HttpKernel')
|
||||||
'tags' => array(),
|
->addArgument(new Reference('dispatcher'))
|
||||||
'references' => array(),
|
->addArgument(new Reference('resolver'));
|
||||||
'parameters' => array(),
|
$container->register('matcher', 'Drupal\Core\LegacyUrlMatcher');
|
||||||
'methods' => array(),
|
$container->register('router_listener', 'Drupal\Core\EventSubscriber\RouterListener')
|
||||||
'arguments' => array(),
|
->addArgument(new Reference('matcher'))
|
||||||
);
|
->addTag('kernel.event_subscriber');
|
||||||
|
$container->register('content_negotiation', 'Drupal\Core\ContentNegotiation');
|
||||||
$references = array();
|
$container->register('view_subscriber', 'Drupal\Core\EventSubscriber\ViewSubscriber')
|
||||||
foreach ($info['references'] as $ref_id) {
|
->addArgument(new Reference('content_negotiation'))
|
||||||
$references[] = new Reference($ref_id);
|
->addTag('kernel.event_subscriber');
|
||||||
}
|
$container->register('access_subscriber', 'Drupal\Core\EventSubscriber\AccessSubscriber')
|
||||||
|
->addTag('kernel.event_subscriber');
|
||||||
$definition = new Definition($info['class'], $references);
|
$container->register('maintenance_mode_subscriber', 'Drupal\Core\EventSubscriber\MaintenanceModeSubscriber')
|
||||||
|
->addTag('kernel.event_subscriber');
|
||||||
foreach ($info['parameters'] as $key => $param) {
|
$container->register('path_subscriber', 'Drupal\Core\EventSubscriber\PathSubscriber')
|
||||||
$container->setParameter($key, $param);
|
->addTag('kernel.event_subscriber');
|
||||||
$definition->addArgument("%{$key}%");
|
$container->register('legacy_request_subscriber', 'Drupal\Core\EventSubscriber\LegacyRequestSubscriber')
|
||||||
}
|
->addTag('kernel.event_subscriber');
|
||||||
|
$container->register('legacy_controller_subscriber', 'Drupal\Core\EventSubscriber\LegacyControllerSubscriber')
|
||||||
if (isset($info['factory_class']) && isset($info['factory_method'])) {
|
->addTag('kernel.event_subscriber');
|
||||||
$definition->setFactoryClass($info['factory_class']);
|
$container->register('finish_response_subscriber', 'Drupal\Core\EventSubscriber\FinishResponseSubscriber')
|
||||||
$definition->setFactoryMethod($info['factory_method']);
|
->addTag('kernel.event_subscriber');
|
||||||
}
|
$container->register('request_close_subscriber', 'Drupal\Core\EventSubscriber\RequestCloseSubscriber')
|
||||||
|
->addTag('kernel.event_subscriber');
|
||||||
foreach ($info['arguments'] as $argument) {
|
$container->register('database', 'Drupal\Core\Database\Connection')
|
||||||
$definition->addArgument($argument);
|
->setFactoryClass('Drupal\Core\Database\Database')
|
||||||
}
|
->setFactoryMethod('getConnection')
|
||||||
|
->addArgument('default');
|
||||||
foreach($info['tags'] as $tag) {
|
$container->register('database.slave', 'Drupal\Core\Database\Connection')
|
||||||
$definition->addTag($tag);
|
->setFactoryClass('Drupal\Core\Database\Database')
|
||||||
}
|
->setFactoryMethod('getConnection')
|
||||||
|
->addArgument('slave');
|
||||||
foreach ($info['methods'] as $method => $args) {
|
|
||||||
$definition->addMethodCall($method, $args);
|
|
||||||
}
|
|
||||||
|
|
||||||
$container->setDefinition($id, $definition);
|
|
||||||
}
|
|
||||||
|
|
||||||
$container->register('exception_listener', 'Symfony\Component\HttpKernel\EventListener\ExceptionListener')
|
$container->register('exception_listener', 'Symfony\Component\HttpKernel\EventListener\ExceptionListener')
|
||||||
->addTag('kernel.event_subscriber')
|
->addTag('kernel.event_subscriber')
|
||||||
->addArgument(new Reference('service_container'))
|
->addArgument(new Reference('service_container'))
|
||||||
|
@ -66,83 +59,4 @@ class DrupalBundle extends Bundle
|
||||||
$container->addCompilerPass(new RegisterKernelListenersPass(), PassConfig::TYPE_AFTER_REMOVING);
|
$container->addCompilerPass(new RegisterKernelListenersPass(), PassConfig::TYPE_AFTER_REMOVING);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an array of definitions for the services we want to register.
|
|
||||||
*/
|
|
||||||
function getDefinitions() {
|
|
||||||
return array(
|
|
||||||
'dispatcher' => array(
|
|
||||||
'class' => 'Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher',
|
|
||||||
'references' => array(
|
|
||||||
'service_container',
|
|
||||||
),
|
|
||||||
),
|
|
||||||
'resolver' => array(
|
|
||||||
'class' => 'Symfony\Component\HttpKernel\Controller\ControllerResolver',
|
|
||||||
),
|
|
||||||
'http_kernel' => array(
|
|
||||||
'class' => 'Symfony\Component\HttpKernel\HttpKernel',
|
|
||||||
'references' => array(
|
|
||||||
'dispatcher', 'resolver',
|
|
||||||
)
|
|
||||||
),
|
|
||||||
'matcher' => array(
|
|
||||||
'class' => 'Drupal\Core\LegacyUrlMatcher',
|
|
||||||
),
|
|
||||||
'router_listener' => array(
|
|
||||||
'class' => 'Drupal\Core\EventSubscriber\RouterListener',
|
|
||||||
'references' => array('matcher'),
|
|
||||||
'tags' => array('kernel.event_subscriber')
|
|
||||||
),
|
|
||||||
'content_negotiation' => array(
|
|
||||||
'class' => 'Drupal\Core\ContentNegotiation',
|
|
||||||
),
|
|
||||||
'view_subscriber' => array(
|
|
||||||
'class' => 'Drupal\Core\EventSubscriber\ViewSubscriber',
|
|
||||||
'references' => array('content_negotiation'),
|
|
||||||
'tags' => array('kernel.event_subscriber')
|
|
||||||
),
|
|
||||||
'access_subscriber' => array(
|
|
||||||
'class' => 'Drupal\Core\EventSubscriber\AccessSubscriber',
|
|
||||||
'tags' => array('kernel.event_subscriber')
|
|
||||||
),
|
|
||||||
'maintenance_mode_subscriber' => array(
|
|
||||||
'class' => 'Drupal\Core\EventSubscriber\MaintenanceModeSubscriber',
|
|
||||||
'tags' => array('kernel.event_subscriber')
|
|
||||||
),
|
|
||||||
'path_subscriber' => array(
|
|
||||||
'class' => 'Drupal\Core\EventSubscriber\PathSubscriber',
|
|
||||||
'tags' => array('kernel.event_subscriber')
|
|
||||||
),
|
|
||||||
'legacy_request_subscriber' => array(
|
|
||||||
'class' => 'Drupal\Core\EventSubscriber\LegacyRequestSubscriber',
|
|
||||||
'tags' => array('kernel.event_subscriber')
|
|
||||||
),
|
|
||||||
'legacy_controller_subscriber' => array(
|
|
||||||
'class' => 'Drupal\Core\EventSubscriber\LegacyControllerSubscriber',
|
|
||||||
'tags' => array('kernel.event_subscriber')
|
|
||||||
),
|
|
||||||
'finish_response_subscriber' => array(
|
|
||||||
'class' => 'Drupal\Core\EventSubscriber\FinishResponseSubscriber',
|
|
||||||
'tags' => array('kernel.event_subscriber')
|
|
||||||
),
|
|
||||||
'request_close_subscriber' => array(
|
|
||||||
'class' => 'Drupal\Core\EventSubscriber\RequestCloseSubscriber',
|
|
||||||
'tags' => array('kernel.event_subscriber')
|
|
||||||
),
|
|
||||||
'database' => array(
|
|
||||||
'class' => 'Drupal\Core\Database\Connection',
|
|
||||||
'factory_class' => 'Drupal\Core\Database\Database',
|
|
||||||
'factory_method' => 'getConnection',
|
|
||||||
'arguments' => array('default'),
|
|
||||||
),
|
|
||||||
'database.slave' => array(
|
|
||||||
'class' => 'Drupal\Core\Database\Connection',
|
|
||||||
'factory_class' => 'Drupal\Core\Database\Database',
|
|
||||||
'factory_method' => 'getConnection',
|
|
||||||
'arguments' => array('slave'),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue