- 直接写法
Route::any('{module}/{class}/{action}', function ($module, $class, $action) {
$ctrl = \App::make("\\App\\Http\\Controllers\\" . $module . "\\" . $class . "Controller");
return \App::call([$ctrl, $action]);
});
注:网上很多{module}前面加了“/”这个,这种写法我测试不通,必须去掉才行。您使用的时候可以测试测试。
-安全写法
Route::any('{module}/{class}/{action}', function ($module, $class, $action) {
$class = "App\\Http\\Controllers\\$module\\" . ucfirst(strtolower($class)) . 'Controller';
if (class_exists($class)) {
$ctrl = \App::make($class);
if (method_exists($ctrl, $action)) {
return \App::call([$ctrl, $action]);
}
}
return abort(404);
});