Skip to content
This repository was archived by the owner on Apr 26, 2020. It is now read-only.

Commit 9a3ce25

Browse files
committed
支持多级模块
1 parent 96011b1 commit 9a3ce25

File tree

2 files changed

+15
-14
lines changed

2 files changed

+15
-14
lines changed

src/ApiDesc.php

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,21 @@ public function render() {
3636

3737
$exploade_service = explode('/', $service);
3838
switch (count($exploade_service)) {
39-
case 2:
39+
case 2://不是模块
4040
$classNameTpl = \Yii::$app->controllerNamespace . '\\%sController';
4141
$className = sprintf($classNameTpl, ucfirst($exploade_service[0]));
4242
$methodName = 'action' .ucfirst($exploade_service[1]);
4343
break;
44-
case 3:
45-
$module = \Yii::$app->modules[$exploade_service['0']]['class'];
44+
default://是模块
45+
//不论几级模块,倒数第三个一定是模块名
46+
$c = count($exploade_service);
47+
$moduleName = $exploade_service[$c-3];
48+
$module = \Yii::$app->modules[$moduleName]['class'];
4649
$t = new \ReflectionClass($module);
4750
$moduleNamespace = $t->getNamespaceName();
4851
$classNameTpl = $moduleNamespace . '\\controllers\\%sController';
49-
$className = sprintf($classNameTpl, ucfirst($exploade_service[1]));
50-
$methodName = 'action' .ucfirst($exploade_service[2]);
52+
$className = sprintf($classNameTpl, ucfirst($exploade_service[$c-2]));
53+
$methodName = 'action' .ucfirst($exploade_service[$c-1]);
5154
break;
5255
}
5356
// 整合需要的类注释,包括父类注释

src/ApiList.php

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -66,16 +66,14 @@ public function render($modules = []) {
6666
}
6767
foreach ($classesName as $className) {
6868
$explodeClassName = explode('\\', trim($className, '\\'));
69-
switch (count($explodeClassName)) {
70-
case 3:
71-
$apiServerShortName = $explodeClassName[2];
72-
$service_1 = strtolower(substr($apiServerShortName, 0, -10));
73-
break;
74-
case 5:
75-
$apiServerShortName = $explodeClassName[2] . '.' . $explodeClassName[4];
76-
$service_1 = strtolower(substr($apiServerShortName, 0, -10));
77-
break;
69+
$c = count($explodeClassName);
70+
if ($c > 3) {
71+
unset($explodeClassName[$c-2]);
7872
}
73+
unset($explodeClassName[0]);
74+
unset($explodeClassName[1]);
75+
$apiServerShortName = implode('.', $explodeClassName);//ok
76+
$service_1 = strtolower(substr($apiServerShortName, 0, -10));
7977
$apiServer = $className;
8078
if (!class_exists($className)) {
8179
continue;

0 commit comments

Comments
 (0)