ModuleInstallerInterface.php

Same filename in other branches
  1. 9 core/lib/Drupal/Core/Extension/ModuleInstallerInterface.php
  2. 8.9.x core/lib/Drupal/Core/Extension/ModuleInstallerInterface.php
  3. 10 core/lib/Drupal/Core/Extension/ModuleInstallerInterface.php

Namespace

Drupal\Core\Extension

File

core/lib/Drupal/Core/Extension/ModuleInstallerInterface.php

View source
<?php

namespace Drupal\Core\Extension;


/**
 * Provides the installation of modules with creating the db schema and more.
 */
interface ModuleInstallerInterface {
    
    /**
     * Installs a given list of modules.
     *
     * Order of events:
     * - Gather and add module dependencies to $module_list (if applicable).
     * - For each module that is being installed:
     *   - Invoke hook_module_preinstall().
     *   - Install module schema and update system registries and caches.
     *   - Invoke hook_install() and add it to the list of installed modules.
     * - Invoke hook_modules_installed().
     *
     * To install test modules add
     * @code
     * $settings['extension_discovery_scan_tests'] = TRUE;
     * @endcode
     * to your settings.php.
     *
     * @param string[] $module_list
     *   An array of module names.
     * @param bool $enable_dependencies
     *   (optional) If TRUE, dependencies will automatically be installed in the
     *   correct order. This incurs a significant performance cost, so use FALSE
     *   if you know $module_list is already complete.
     *
     * @return bool
     *   TRUE if the modules were successfully installed.
     *
     * @throws \Drupal\Core\Extension\MissingDependencyException
     *   Thrown when a requested module, or a dependency of one, can not be found.
     *
     * @throws \Drupal\Core\Extension\ExtensionNameLengthException
     *   Thrown when the extension's name is longer than
     *   DRUPAL_EXTENSION_NAME_MAX_LENGTH.
     *
     * @throws \Drupal\Core\Extension\ExtensionNameReservedException
     *   Thrown when a module's name is already used by an installed theme.
     *
     * @see hook_module_preinstall()
     * @see hook_install()
     * @see hook_modules_installed()
     */
    public function install(array $module_list, $enable_dependencies = TRUE);
    
    /**
     * Uninstalls a given list of modules.
     *
     * @param string[] $module_list
     *   The modules to uninstall.
     * @param bool $uninstall_dependents
     *   (optional) If TRUE, dependent modules will automatically be uninstalled
     *   in the correct order. This incurs a significant performance cost, so use
     *   FALSE if you know $module_list is already complete.
     *
     * @return bool
     *   FALSE if one or more dependencies are missing, TRUE otherwise.
     *
     * @throws \Drupal\Core\Extension\ModuleUninstallValidatorException
     *   Thrown when validation prevented the module from being uninstalled.
     *
     * @see hook_module_preuninstall()
     * @see hook_uninstall()
     * @see hook_modules_uninstalled()
     */
    public function uninstall(array $module_list, $uninstall_dependents = TRUE);
    
    /**
     * Adds a module uninstall validator.
     *
     * @param \Drupal\Core\Extension\ModuleUninstallValidatorInterface $uninstall_validator
     *   The uninstall validator to add.
     *
     * @deprecated in drupal:11.1.0 and is removed from drupal:12.0.0. Inject
     *   the uninstall validators into the constructor instead.
     *
     * @see https://www.drupal.org/node/3432595
     */
    public function addUninstallValidator(ModuleUninstallValidatorInterface $uninstall_validator);
    
    /**
     * Determines whether a list of modules can be uninstalled.
     *
     * @param string[] $module_list
     *   An array of module names.
     *
     * @return string[]
     *   An array of reasons the module can not be uninstalled, empty if it can.
     */
    public function validateUninstall(array $module_list);

}

Interfaces

Title Deprecated Summary
ModuleInstallerInterface Provides the installation of modules with creating the db schema and more.

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