From ff81e7093c880a9d5a3c946248fa60ee1ce107b7 Mon Sep 17 00:00:00 2001 From: Chris Eastwood <eastwood.chris@gmail.com> Date: Fri, 24 Aug 2018 10:20:43 -0700 Subject: [PATCH] Store pattern hooks in an array keyed by hook name for faster lookup --- src/UiPatternsManager.php | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/UiPatternsManager.php b/src/UiPatternsManager.php index 254f8a25..9f1a0d00 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]); } /** -- GitLab