EclipseGc

DrupalContainer.php

Feb 13th, 2012
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.87 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Drupal\Core;
  4.  
  5. use Symfony\Component\DependencyInjection\ContainerBuilder;
  6. use Symfony\Component\DependencyInjection\Reference;
  7. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  8. use Symfony\Component\HttpKernel\KernelEvents;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\EventDispatcher\Event;
  11.  
  12. class DrupalContainer extends ContainerBuilder {
  13.   public function __construct(ParameterBagInterface $parameterBag = null) {
  14.     parent::__construct($parameterBag);
  15.     $this->register('context', 'Symfony\Component\Routing\RequestContext')
  16.       ->addMethodCall('fromRequest', array(new Reference($this->parameterBag->get('request'))));
  17.     $this->register('matcher', 'Drupal\Core\UrlMatcher;')
  18.       ->setArguments(array(new Reference('context')));
  19.     $this->register('resolver', 'Symfony\Component\HttpKernel\Controller\ControllerResolver');
  20.     $this->register('controller', new Reference('resolver'))
  21.       ->addMethodCall('getController', array(new Reference($this->parameterBag->get('request'))));
  22.     $this->register('arguments', new Reference('resolver'))
  23.       ->addMethodCall('getArguments', array(new Reference($this->parameterBag->get('request')), new Reference('controller')));
  24.     $this->register('dispatcher', 'Symfony\Component\EventDispatcher\EventDispatcher')
  25.       ->addMethodCall('addListener', array(
  26.         KernelEvents::VIEW,
  27.         function(Event $event) {
  28.           $page_callback_result = $event->getControllerResult();
  29.           $event->setResponse(new Response(drupal_render_page($page_callback_result)));
  30.         }
  31.       ));
  32.     $this->register('kernel', 'Symfony\Component\HttpKernel\HttpKernel')
  33.       ->setArguments(array(new Reference('dispatcher'), new Reference('resolver')))
  34.       ->addMethodCall('handle', array(new Reference($this->parameterBag->get('request'))));
  35.   }
  36. }
Advertisement
Add Comment
Please, Sign In to add comment