function ModuleInstaller::updateKernel

Same name in other branches
  1. 9 core/lib/Drupal/Core/Extension/ModuleInstaller.php \Drupal\Core\Extension\ModuleInstaller::updateKernel()
  2. 8.9.x core/lib/Drupal/Core/Extension/ModuleInstaller.php \Drupal\Core\Extension\ModuleInstaller::updateKernel()
  3. 10 core/lib/Drupal/Core/Extension/ModuleInstaller.php \Drupal\Core\Extension\ModuleInstaller::updateKernel()

Updates the kernel module list.

Parameters

\Drupal\Core\Extension\Extension[] $module_filenames: The list of installed modules.

2 calls to ModuleInstaller::updateKernel()
ModuleInstaller::doInstall in core/lib/Drupal/Core/Extension/ModuleInstaller.php
Installs a set of modules.
ModuleInstaller::uninstall in core/lib/Drupal/Core/Extension/ModuleInstaller.php
Uninstalls a given list of modules.

File

core/lib/Drupal/Core/Extension/ModuleInstaller.php, line 716

Class

ModuleInstaller
Default implementation of the module installer.

Namespace

Drupal\Core\Extension

Code

protected function updateKernel($module_filenames) {
    // Save current state of config installer, so it can be restored after the
    // container is rebuilt.
    
    /** @var \Drupal\Core\Config\ConfigInstallerInterface $config_installer */
    $config_installer = $this->kernel
        ->getContainer()
        ->get('config.installer');
    $sync_status = $config_installer->isSyncing();
    $source_storage = $config_installer->getSourceStorage();
    if (!empty($module_filenames)) {
        // This reboots the kernel to register the module's bundle and its services
        // in the service container. The $module_filenames argument is taken over as
        // %container.modules% parameter, which is passed to a fresh ModuleHandler
        // instance upon first retrieval.
        $this->kernel
            ->updateModules($module_filenames, $module_filenames);
        $container = $this->kernel
            ->getContainer();
    }
    else {
        $container = $this->kernel
            ->resetContainer();
    }
    // After rebuilding the container we need to update the injected
    // dependencies.
    $this->moduleHandler = $container->get('module_handler');
    $this->connection = $container->get('database');
    $this->updateRegistry = $container->get('update.update_hook_registry');
    // Restore state of config installer.
    if ($sync_status) {
        $container->get('config.installer')
            ->setSyncing(TRUE)
            ->setSourceStorage($source_storage);
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.