public static function getPatterns($refresh = false) { if (!isset(self::$_patterns) || $refresh) { if (!$refresh) { self::$_patterns = Yii::$app->cache->get('seoPatterns'); } if (!self::$_patterns) { self::$_patterns = []; // TODO: Optimization /** @var Page[] $pages */ $patterns = Page::find()->column('pattern'); foreach ($patterns as $pattern) { if (strpos($pattern, '*') !== false) { self::$_patterns[$pattern] = '#^' . strtr($pattern, ['*' => '(.*)']) . '$#'; } } Yii::$app->cache->set('seoPatterns', self::$_patterns); } } return self::$_patterns; }