diff --git a/core/includes/common.inc b/core/includes/common.inc index eeb3fa85d555cb1a775e46778d4b5c69c3f8da39..a4fcf511ce198c0e056813364ccaddc85f547d82 100644 --- a/core/includes/common.inc +++ b/core/includes/common.inc @@ -5091,7 +5091,6 @@ function _drupal_bootstrap_full() { require_once DRUPAL_ROOT . '/core/includes/theme.inc'; require_once DRUPAL_ROOT . '/core/includes/pager.inc'; require_once DRUPAL_ROOT . '/' . variable_get('menu_inc', 'core/includes/menu.inc'); - require_once DRUPAL_ROOT . '/core/includes/router.inc'; require_once DRUPAL_ROOT . '/core/includes/tablesort.inc'; require_once DRUPAL_ROOT . '/core/includes/file.inc'; require_once DRUPAL_ROOT . '/core/includes/unicode.inc'; diff --git a/core/includes/router.inc b/core/includes/router.inc deleted file mode 100644 index 26670db749dd18967b8f1a1f90efb4647f66451c..0000000000000000000000000000000000000000 --- a/core/includes/router.inc +++ /dev/null @@ -1,56 +0,0 @@ -<?php - -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\Routing\RequestContext; -use Symfony\Component\Routing\Exception\ResourceNotFoundException; -use Symfony\Component\HttpKernel\HttpKernel; -use Symfony\Component\HttpKernel\Controller\ControllerResolver; -use Symfony\Component\HttpKernel\KernelEvents; -use Symfony\Component\EventDispatcher\EventDispatcher; -use Symfony\Component\EventDispatcher\Event; -use Drupal\Core\UrlMatcher; - -/** - * Execute the page callback associated with given request. - * - * @param Request $request - * The Symfony Request object used to determine what will be executed. - * @return Response - * A Symfony Response object describing the response to deliver to the client. - */ -function router_execute_request(Request $request) { - - try { - // Resolve a routing context(path, etc) using the routes object to a - // Set a routing context to translate. - $context = new RequestContext(); - $context->fromRequest($request); - $matcher = new UrlMatcher($context); - // Push path paramaters into attributes. - $request->attributes->add($matcher->match($request->getPathInfo())); - - // Get the controller(page callback) from the resolver. - $resolver = new ControllerResolver(); - $controller = $resolver->getController($request); - $arguments = $resolver->getArguments($request, $controller); - - $dispatcher = new EventDispatcher(); - // Quick and dirty attempt at wrapping our rendering logic as is. - $dispatcher->addListener(KernelEvents::VIEW, function(Event $event) { - $page_callback_result = $event->getControllerResult(); - $event->setResponse(new Response(drupal_render_page($page_callback_result))); - }); - - $kernel = new HttpKernel($dispatcher, $resolver); - return $kernel->handle($request); - } - catch (ResourceNotFoundException $e) { - $response = new Response('Not Found', 404); - } - //catch (Exception $e) { - // $response = new Response('An error occurred', 500); - //} - - return $response; -} diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php new file mode 100644 index 0000000000000000000000000000000000000000..f7dd25998a027ee17b1c3556c720f3b2e9c41514 --- /dev/null +++ b/core/lib/Drupal/Core/DrupalKernel.php @@ -0,0 +1,61 @@ +<?php + +namespace Drupal\Core; + +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Routing\RequestContext; +use Symfony\Component\Routing\Exception\ResourceNotFoundException; +use Symfony\Component\HttpKernel\HttpKernelInterface; +use Symfony\Component\HttpKernel\HttpKernel; +use Symfony\Component\HttpKernel\Controller\ControllerResolver; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\EventDispatcher\EventDispatcher; +use Symfony\Component\EventDispatcher\Event; + +/** + * @file + * + * Definition of Drupal\Core\DrupalKernel. + */ + +/** + * The DrupalKernel is the main routing and dispatching routine in Drupal. + */ +class DrupalKernel implements HttpKernelInterface { + + function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true) { + try { + // Resolve a routing context(path, etc) using the routes object to a + // Set a routing context to translate. + $context = new RequestContext(); + $context->fromRequest($request); + $matcher = new UrlMatcher($context); + // Push path paramaters into attributes. + $request->attributes->add($matcher->match($request->getPathInfo())); + + // Get the controller(page callback) from the resolver. + $resolver = new ControllerResolver(); + $controller = $resolver->getController($request); + $arguments = $resolver->getArguments($request, $controller); + + $dispatcher = new EventDispatcher(); + // Quick and dirty attempt at wrapping our rendering logic as is. + $dispatcher->addListener(KernelEvents::VIEW, function(Event $event) { + $page_callback_result = $event->getControllerResult(); + $event->setResponse(new Response(drupal_render_page($page_callback_result))); + }); + + $kernel = new HttpKernel($dispatcher, $resolver); + return $kernel->handle($request); + } + catch (ResourceNotFoundException $e) { + $response = new Response('Not Found', 404); + } + //catch (Exception $e) { + // $response = new Response('An error occurred', 500); + //} + + return $response; + } +} diff --git a/index.php b/index.php index 50cafff9c50865a71cf46f88f102d4a538c60b73..8002359d2ed8aee28771ee26845d7bed32e9893f 100644 --- a/index.php +++ b/index.php @@ -1,5 +1,7 @@ <?php +use Drupal\Core\DrupalKernel; + /** * @file * The PHP page that serves all page requests on a Drupal installation. @@ -24,7 +26,10 @@ // A request object from the HTTPFoundation to tell us about the request. $request = Request::createFromGlobals(); -// Run our router, get a response. -$response = router_execute_request($request); +// Run our kernel, get a response, and send it. +$kernel = new DrupalKernel(); +$kernel->handle($request)->send(); + +//$response = router_execute_request($request); // Output response. -$response->send(); +//$response->send();