diff --git a/core/lib/Drupal/Core/Extension/ModuleHandler.php b/core/lib/Drupal/Core/Extension/ModuleHandler.php index b9a9a3e4974cf87174115480d533edcaed4c2e0a..05f1e4f37283393526539599eab7368784ae6ca9 100644 --- a/core/lib/Drupal/Core/Extension/ModuleHandler.php +++ b/core/lib/Drupal/Core/Extension/ModuleHandler.php @@ -89,6 +89,13 @@ class ModuleHandler implements ModuleHandlerInterface { */ protected $root; + /** + * A list of module include file keys. + * + * @var array + */ + protected $includeFileKeys = []; + /** * Constructs a ModuleHandler object. * @@ -263,14 +270,21 @@ public function loadInclude($module, $type, $name = NULL) { } $name = $name ?: $module; + $key = $type . ':' . $module . ':' . $name; + if (isset($this->includeFileKeys[$key])) { + return $this->includeFileKeys[$key]; + } if (isset($this->moduleList[$module])) { $file = $this->root . '/' . $this->moduleList[$module]->getPath() . "/$name.$type"; if (is_file($file)) { require_once $file; + $this->includeFileKeys[$key] = $file; return $file; } + else { + $this->includeFileKeys[$key] = FALSE; + } } - return FALSE; }