Closed ichynul closed 2 years ago
感谢pr
不过webman下app的含义是控制器所在app下的目录
例如 app\admin\v1\controller\Login::class
的app应该是admin,不应该是v1。
vendor下的文件不属于任何应用才对
vendor下的文件不属于任何应用才对
。
感觉这个限制太死板了。
看了一下源码。Route::load 会扫描 config/plugin/***
里面的其他插件复制进去的route.php
路由配置。
既然插件里面有route.php
,那肯定也有对应的控制器处理类呀。
控制器不放vendor
里,那只有两种办法。
1、插件安装的时候里面的控制器复制到根目录的/app/
目录下,卸载时删除,多个插件会不有冲突?
2、在composer.json
里面定义命名空间:
"autoload": {
"psr-4": {
"mypkg": "./src",
"App\\": "./app"
},
"files": [
"./support/helpers.php"
]
},
感觉都有点麻烦,还是根据请求url路径判断比较好。 @walkor
从$controller_calss中获取app名时提取
controller
前面的路径为app名。原写法对控制器的命名规则限制较大。当$controller_calsss是在vender中时,一般都会有个自己的命名空间在最前面。
Route::any('/admin/test/index', packgexxx\admin\controller\Test::class);
Route::any('/admin/test2/index', packgexxx\yyyy\admin\controller\Test2::class);
感觉从$controller_calss里面获取当前app不靠谱,如果类的命名空间不按套路的话。
Route::any('/admin/test3/index', packgexxx\Test3::class);
还是像
parseControllerAction
里面那样,根据当前请求路径判断好一些。