DrupalKernelInterface.php 3.41 KB
Newer Older
1 2 3 4
<?php

namespace Drupal\Core;

5
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
6
use Symfony\Component\HttpKernel\HttpKernelInterface;
7
use Symfony\Component\HttpFoundation\Request;
8 9 10 11 12 13 14

/**
 * The interface for DrupalKernel, the core of Drupal.
 *
 * This interface extends Symfony's KernelInterface and adds methods for
 * responding to modules being enabled or disabled during its lifetime.
 */
15
interface DrupalKernelInterface extends HttpKernelInterface, ContainerAwareInterface {
16 17 18

  /**
   * Boots the current kernel.
19 20
   *
   * @return $this
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
   */
  public function boot();

  /**
   * Shuts down the kernel.
   */
  public function shutdown();

  /**
   * Discovers available serviceProviders.
   *
   * @return array
   *   The available serviceProviders.
   */
  public function discoverServiceProviders();

  /**
   * Returns all registered service providers.
   *
40 41 42
   * @param string $origin
   *   The origin for which to return service providers; one of 'app' or 'site'.
   *
43 44 45
   * @return array
   *   An associative array of ServiceProvider objects, keyed by name.
   */
46
  public function getServiceProviders($origin);
47 48 49 50

  /**
   * Gets the current container.
   *
51 52
   * @return \Symfony\Component\DependencyInjection\ContainerInterface
   *   A ContainerInterface instance.
53 54
   */
  public function getContainer();
55

56 57 58 59 60 61 62 63 64 65
  /**
   * Returns the cached container definition - if any.
   *
   * This also allows inspecting a built container for debugging purposes.
   *
   * @return array|NULL
   *   The cached container definition or NULL if not found in cache.
   */
  public function getCachedContainerDefinition();

66 67 68
  /**
   * Set the current site path.
   *
69
   * @param string $path
70
   *   The current site path.
71 72 73
   *
   * @throws \LogicException
   *   In case the kernel is already booted.
74 75 76 77 78 79 80 81 82 83 84
   */
  public function setSitePath($path);

  /**
   * Get the site path.
   *
   * @return string
   *   The current site path.
   */
  public function getSitePath();

85 86 87 88 89 90 91
  /**
   * Gets the app root.
   *
   * @return string
   */
  public function getAppRoot();

92 93 94 95 96 97 98 99
  /**
   * Updates the kernel's list of modules to the new list.
   *
   * The kernel needs to update its bundle list and container to match the new
   * list.
   *
   * @param array $module_list
   *   The new list of modules.
100 101
   * @param array $module_filenames
   *   List of module filenames, keyed by module name.
102
   */
103
  public function updateModules(array $module_list, array $module_filenames = array());
104

105 106 107 108 109 110 111 112 113 114 115 116
  /**
   * Force a container rebuild.
   *
   * @return \Symfony\Component\DependencyInjection\ContainerInterface
   */
  public function rebuildContainer();

  /**
   * Invalidate the service container for the next request.
   */
  public function invalidateContainer();

117 118 119 120 121 122 123 124
  /**
   * Prepare the kernel for handling a request without handling the request.
   *
   * @param \Symfony\Component\HttpFoundation\Request $request
   *   The current request.
   *
   * @return $this
   *
125 126
   * @deprecated in Drupal 8.0.x and will be removed before 9.0.0. Only used by
   *   legacy front-controller scripts.
127 128 129
   */
  public function prepareLegacyRequest(Request $request);

130 131 132 133 134 135 136 137
  /**
   * Helper method that does request related initialization.
   *
   * @param \Symfony\Component\HttpFoundation\Request $request
   *   The current request.
   */
  public function preHandle(Request $request);

138 139 140 141 142
  /**
   * Helper method that loads legacy Drupal include files.
   */
  public function loadLegacyIncludes();

143
}