由上图目录结构和官方文档可以看到。路由的相关定义在项目目录下的routes
一个新的项目打开routes 目录可以看到
./
../
api.php
channels.php
console.php
web.php
在写的时候 我有一个想法,也不知道该如何去判断利弊。
Q1:
在开发过程中 肯定会存在多个路由。不难看出寻常访问的路由是定义在 web.php
文件内。
但是,路由多了肯定少不了归类整理。那么 怎么整理 合适呢?
A1:
我的想法是。关于路由分类官方给出了一个路由组的概念 一组一类的 放在一起 给共同的属性,比如相同的路由前缀。相同的子域名等等属性。
可是这样避免不了一点是 web.php 文件会相当的臃肿,当然看到了这里很多人会想
不是可以用 include_once
引入外部的文件(*.php file) 来解决单个文件臃肿的问题。当然这个解决方法是肯定的。
那么。再换一个角度。是不是以模块为一个分组同时作为路由前缀 这样的分类会不会更好呢。当然这个前提是撇开子域。个人感觉,以模块作为路由前缀和以模块作为路由子域的处理方法 是一样的。
贴上代码
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::redirect('/','/home',301);
/*
|--------------------------------------------------------------------------
| Web Site Home
|--------------------------------------------------------------------------
|
| 站点 前台
|
*/
$homePath = __DIR__ . '/home';
searchFile($homePath);
/*
|--------------------------------------------------------------------------
| search current folder file
|--------------------------------------------------------------------------
|
| 遍历文件夹内的所有文件
|
*/
function searchFile($path = null){
$DirArray = scandir($path);
$prefix = basename($path);
Route::group(['prefix'=>$prefix],function ()use($DirArray,$path) {
foreach ($DirArray as $dirItem){
if (empty(is_dir(realpath($path . '/' . $dirItem )))){
include_once realpath($path . '/' . $dirItem );
}
}
});
}