/**
* @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 . '/*';
}
}
}
}