diff --git a/src/UiPatternsManager.php b/src/UiPatternsManager.php index 254f8a25981bebf0bc50893637baf7044baeb691..9f1a0d0000b1b680fe2c05c5b8880af786229ffe 100644 --- a/src/UiPatternsManager.php +++ b/src/UiPatternsManager.php @@ -26,6 +26,13 @@ class UiPatternsManager extends DefaultPluginManager implements PluginManagerInt */ protected $themeHandler; + /** + * An array of pattern theme hooks for fast lookup. + * + * @var array + */ + protected $patternHooks; + /** * UiPatternsManager constructor. */ @@ -85,10 +92,12 @@ class UiPatternsManager extends DefaultPluginManager implements PluginManagerInt * {@inheritdoc} */ public function isPatternHook($hook) { - $definitions = array_filter($this->getDefinitions(), function (PatternDefinition $definition) use ($hook) { - return $definition->getThemeHook() == $hook; - }); - return !empty($definitions); + if (empty($this->patternHooks)) { + foreach ($this->getDefinitions() as $definition) { + $this->patternHooks[$definition->getThemeHook()] = $definition->getThemeHook(); + } + } + return !empty($this->patternHooks[$hook]); } /**