Adding the config services to the container and removing the bootstrap_variables call from before the kernel boot, plus other minor adjustments
parent
e54fc07904
commit
d7dd619021
|
@ -2450,7 +2450,7 @@ function drupal_get_bootstrap_phase() {
|
|||
* The instance of the Drupal Container used to set up and maintain object
|
||||
* instances.
|
||||
*/
|
||||
function drupal_container(ContainerBuilder $reset = NULL) {
|
||||
function drupal_container(Container $reset = NULL) {
|
||||
// We do not use drupal_static() here because we do not have a mechanism by
|
||||
// which to reinitialize the stored objects, so a drupal_static_reset() call
|
||||
// would leave Drupal in a nonfunctional state.
|
||||
|
@ -2460,14 +2460,13 @@ function drupal_container(ContainerBuilder $reset = NULL) {
|
|||
}
|
||||
elseif (!isset($container)) {
|
||||
// This will only ever happen if an error has been thrown. Just build a new
|
||||
// ContainerBuilder with only the language_interface and language_content
|
||||
// services.
|
||||
// ContainerBuilder with only the language_interface service.
|
||||
$container = new ContainerBuilder();
|
||||
|
||||
// An interface language always needs to be available for t() and other
|
||||
// functions. This default is overridden by drupal_language_initialize()
|
||||
// during language negotiation.
|
||||
$container->register(LANGUAGE_TYPE_INTERFACE, 'Drupal\\Core\\Language\\Language');
|
||||
$container->register(LANGUAGE_TYPE_CONTENT, 'Drupal\\Core\\Language\\Language');
|
||||
}
|
||||
return $container;
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ class DrupalBundle extends Bundle
|
|||
$info += array(
|
||||
'tags' => array(),
|
||||
'references' => array(),
|
||||
'parameters' => array(),
|
||||
'methods' => array(),
|
||||
'arguments' => array(),
|
||||
);
|
||||
|
@ -32,6 +33,11 @@ class DrupalBundle extends Bundle
|
|||
|
||||
$definition = new Definition($info['class'], $references);
|
||||
|
||||
foreach ($info['parameters'] as $key => $param) {
|
||||
$container->setParameter($key, $param);
|
||||
$definition->addArgument("%{$key}%");
|
||||
}
|
||||
|
||||
if (isset($info['factory_class']) && isset($info['factory_method'])) {
|
||||
$definition->setFactoryClass($info['factory_class']);
|
||||
$definition->setFactoryMethod($info['factory_method']);
|
||||
|
@ -63,6 +69,31 @@ class DrupalBundle extends Bundle
|
|||
*/
|
||||
function getDefinitions() {
|
||||
return array(
|
||||
// Register configuration storage dispatcher.
|
||||
'config.storage.dispatcher' => array(
|
||||
'class' => 'Drupal\Core\Config\StorageDispatcher',
|
||||
'parameters' => array(
|
||||
'conifg.storage.info' => array(
|
||||
'Drupal\Core\Config\DatabaseStorage' => array(
|
||||
'connection' => 'default',
|
||||
'target' => 'default',
|
||||
'read' => TRUE,
|
||||
'write' => TRUE,
|
||||
),
|
||||
'Drupal\Core\Config\FileStorage' => array(
|
||||
'directory' => config_get_config_directory(),
|
||||
'read' => TRUE,
|
||||
'write' => FALSE,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
'config.factory' => array(
|
||||
'class' => 'Drupal\Core\Config\ConfigFactory',
|
||||
'references' => array(
|
||||
'config.storage.dispatcher'
|
||||
)
|
||||
),
|
||||
'dispatcher' => array(
|
||||
'class' => 'Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher',
|
||||
'references' => array(
|
||||
|
|
|
@ -23,6 +23,16 @@ class DrupalKernel extends Kernel {
|
|||
$bundles = array(
|
||||
new DrupalBundle(),
|
||||
);
|
||||
|
||||
// Rather than bootstrapping to a higher phase prior to booting the Kernel, which
|
||||
// would ensure these files are loaded already, we want to boot the Kernel as
|
||||
// early as possible in the bootstrapping phase.
|
||||
// TODO: Somehow remove the necessity of calling system_list() to find out which
|
||||
// bundles exist.
|
||||
require_once DRUPAL_ROOT . '/core/includes/cache.inc';
|
||||
require_once DRUPAL_ROOT . '/core/includes/module.inc';
|
||||
require_once DRUPAL_ROOT . '/core/includes/database.inc';
|
||||
|
||||
$modules = array_keys(system_list('module_enabled'));
|
||||
foreach ($modules as $module) {
|
||||
$class = "\Drupal\{$module}\{$module}Bundle";
|
||||
|
@ -72,9 +82,9 @@ class DrupalKernel extends Kernel {
|
|||
|
||||
public function registerContainerConfiguration(LoaderInterface $loader)
|
||||
{
|
||||
// We have to define this method because it's not defined in the base class,
|
||||
// but the LoaderInterface class is part of the config component, which we
|
||||
// are not using, so this is badness :-/ The alternative is to not extend
|
||||
// the base Kernel class and just implement the KernelInterface.
|
||||
// We have to define this method because it's not defined in the base class
|
||||
// but is part of the KernelInterface interface. However, the LoaderInterface
|
||||
// class is part of the config component, which we are not using, so this
|
||||
// is badness :-/
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,7 +21,6 @@ define('DRUPAL_ROOT', getcwd());
|
|||
// Bootstrap the lowest level of what we need.
|
||||
require_once DRUPAL_ROOT . '/core/includes/bootstrap.inc';
|
||||
drupal_bootstrap(DRUPAL_BOOTSTRAP_CONFIGURATION);
|
||||
drupal_bootstrap(DRUPAL_BOOTSTRAP_VARIABLES);
|
||||
|
||||
// Create a request object from the HTTPFoundation.
|
||||
$request = Request::createFromGlobals();
|
||||
|
|
Loading…
Reference in New Issue