官方文档--路由

由上图目录结构和官方文档可以看到。路由的相关定义在项目目录下的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 );
            }
        }

    });

}

这个时候 home 就是一个路由访问的前缀,对应加载的是当前目录下的home 目录里面的所有文件