diff --git a/core/core.services.yml b/core/core.services.yml index 850bb3542d1f443398a53ebe312c7edbc29af362..08b422c15ff1dbe2d7a70c56691da561eb14f9ac 100644 --- a/core/core.services.yml +++ b/core/core.services.yml @@ -1447,7 +1447,7 @@ services: arguments: ['@app.root', '@theme_handler', '@cache.bootstrap', '@module_handler'] theme.registry: class: Drupal\Core\Theme\Registry - arguments: ['@app.root', '@cache.default', '@lock', '@module_handler', '@theme_handler', '@theme.initialization'] + arguments: ['@app.root', '@cache.default', '@lock', '@module_handler', '@theme_handler', '@theme.initialization', null, '@cache.bootstrap'] tags: - { name: needs_destruction } calls: diff --git a/core/lib/Drupal/Core/Theme/Registry.php b/core/lib/Drupal/Core/Theme/Registry.php index 6f5cb1e7ce3c447ef582d5ff509cbacf157f7b34..0cb00a6392988eabf9664dc256b5a686849023f1 100644 --- a/core/lib/Drupal/Core/Theme/Registry.php +++ b/core/lib/Drupal/Core/Theme/Registry.php @@ -140,6 +140,13 @@ class Registry implements DestructableInterface { */ protected $themeManager; + /** + * The runtime cache. + * + * @var \Drupal\Core\Cache\CacheBackendInterface + */ + protected $runtimeCache; + /** * Constructs a \Drupal\Core\Theme\Registry object. * @@ -157,8 +164,10 @@ class Registry implements DestructableInterface { * The theme initialization. * @param string $theme_name * (optional) The name of the theme for which to construct the registry. + * @param \Drupal\Core\Cache\CacheBackendInterface $runtime_cache + * The cache backend interface to use for the runtime theme registry data. */ - public function __construct($root, CacheBackendInterface $cache, LockBackendInterface $lock, ModuleHandlerInterface $module_handler, ThemeHandlerInterface $theme_handler, ThemeInitializationInterface $theme_initialization, $theme_name = NULL) { + public function __construct($root, CacheBackendInterface $cache, LockBackendInterface $lock, ModuleHandlerInterface $module_handler, ThemeHandlerInterface $theme_handler, ThemeInitializationInterface $theme_initialization, $theme_name = NULL, CacheBackendInterface $runtime_cache = NULL) { $this->root = $root; $this->cache = $cache; $this->lock = $lock; @@ -166,6 +175,7 @@ public function __construct($root, CacheBackendInterface $cache, LockBackendInte $this->themeName = $theme_name; $this->themeHandler = $theme_handler; $this->themeInitialization = $theme_initialization; + $this->runtimeCache = $runtime_cache; } /** @@ -239,7 +249,7 @@ public function get() { public function getRuntime() { $this->init($this->themeName); if (!isset($this->runtimeRegistry[$this->theme->getName()])) { - $this->runtimeRegistry[$this->theme->getName()] = new ThemeRegistry('theme_registry:runtime:' . $this->theme->getName(), $this->cache, $this->lock, array('theme_registry'), $this->moduleHandler->isLoaded()); + $this->runtimeRegistry[$this->theme->getName()] = new ThemeRegistry('theme_registry:runtime:' . $this->theme->getName(), $this->runtimeCache ?: $this->cache, $this->lock, array('theme_registry'), $this->moduleHandler->isLoaded()); } return $this->runtimeRegistry[$this->theme->getName()]; }