function ModuleHandler::add

Adds a module or profile to the list of currently active modules.

Parameters

string $type: The extension type; either 'module' or 'profile'.

string $name: The module name; e.g., 'node'.

string $path: The module path; e.g., 'core/modules/node'.

Deprecated

in drupal:11.2.0 and is removed from drupal:12.0.0. There is no direct replacement.

See also

https://www.drupal.org/node/3491200

2 calls to ModuleHandler::add()
ModuleHandler::addModule in core/lib/Drupal/Core/Extension/ModuleHandler.php
Adds a module to the list of currently active modules.
ModuleHandler::addProfile in core/lib/Drupal/Core/Extension/ModuleHandler.php
Adds an installation profile to the list of currently active modules.

File

core/lib/Drupal/Core/Extension/ModuleHandler.php, line 239

Class

ModuleHandler
Class that manages modules in a Drupal installation.

Namespace

Drupal\Core\Extension

Code

protected function add($type, $name, $path) {
  $pathname = "{$path}/{$name}.info.yml";
  $php_file_path = $this->root . "/{$path}/{$name}.{$type}";
  if ($filename = file_exists($php_file_path) ? "{$name}.{$type}" : NULL) {
    include_once $php_file_path;
  }
  $this->moduleList[$name] = new Extension($this->root, $type, $pathname, $filename);
  $this->resetImplementations();
  $hook_collector = HookCollectorPass::collectAllHookImplementations([
    $name => [
      'pathname' => $pathname,
    ],
  ]);
  // A module freshly added will not be registered on the container yet.
  // Load all includes so the legacy section of invoke can handle hooks in
  // includes.
  $hook_collector->loadAllIncludes();
  // Register procedural implementations.
  foreach ($hook_collector->getAddableImplementations() as $hook => $functions_by_module) {
    $list = $this->hookImplementationLists[$hook] ?? NULL;
    $listeners = $list?->listeners ?? [];
    $modules = $list?->modules ?? [];
    foreach ($functions_by_module as $module => $function) {
      $listeners[] = $function;
      $modules[] = $module;
    }
    if ($listeners) {
      $this->hookImplementationLists[$hook] = new ImplementationList($listeners, $modules);
    }
  }
}

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