/** * @param \yii\base\Module $module * @param $namespace * @param $prefix * @param $result */ private static function getControllerRoutes($module, $namespace, $prefix, &$result) { try { $path = Yii::getAlias('@' . str_replace('\\', '/', $namespace)); } catch (InvalidParamException $e) { $path = $module->getBasePath() . '/controllers'; } foreach (scandir($path) as $file) { if (strpos($file, '.') === 0) { continue; } if (is_dir($path . '/' . $file)) { self::getControllerRoutes($module, $namespace . $file . '\\', $prefix . $file . '/', $result); } elseif (strcmp(substr($file, -14), 'Controller.php') === 0) { $id = Inflector::camel2id(substr(basename($file), 0, -14)); $className = $namespace . Inflector::id2camel($id) . 'Controller'; if (strpos($className, '-') === false && class_exists($className) && is_subclass_of($className, 'yii\\base\\Controller')) { $controller = new $className($prefix . $id, $module); self::getActionRoutes($controller, $result); $result[] = '/' . $controller->uniqueId . '/*'; } } } }