文档章节

Laravel 分割 routes.php 路由文件的最佳方式

zhiqiangw
 zhiqiangw
发布于 2016/10/06 11:07
字数 531
阅读 38
收藏 0

Laravel 的路由功能很强大, 路由规则默认都定义在 routes.php 文件中,但是随着项目越来越大, 我们需要的定义的规则越来越多, 如果几百上千个路由都定义在一个文件中, 如何去维护? 如果不同的人都在同一个文件定义路由, 这就造成了冲突, 因此我们有必要将 routes.php 文件分割成多个文件, 可以按照功能模块来划分, 下面介绍一种很优雅的方式.

在 Laravel 5.1 LTS 版本 app/Providers/RouteServiceProvider.php 的 map 方法中可以如下定义:

<?php

namespace App\Providers;

use Illuminate\Routing\Router;  
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;  
use Route;

class RouteServiceProvider extends ServiceProvider  
{
    /**
     * This namespace is applied to the controller routes in your routes file.
     *
     * In addition, it is set as the URL generator's root namespace.
     *
     * @var string
     */
    protected $namespace = 'App\Http\Controllers';
    protected $api_namespace = 'App\Http\ApiControllers';

    /**
     * Define your route model bindings, pattern filters, etc.
     *
     * @param  \Illuminate\Routing\Router  $router
     * @return void
     */
    public function boot(Router $router)
    {
        $router->pattern('id', '[0-9]+');

        parent::boot($router);
    }

    /**
     * Define the routes for the application.
     *
     * @param  \Illuminate\Routing\Router  $router
     * @return void
     */
    public function map(Router $router)
    {
        $this->mapWebRoutes();
        $this->mapApiRoutes();
    }

    /**
     * Web 路由
     */
    protected function mapWebRoutes()
    {
        Route::group([
            'namespace' => $this->namespace,
            'middleware' => 'restrict_web_access',
        ], function ($router) {
            require base_path('routes/web.php');
        });
    }

    /**
     * Api 路由
     */
    protected function mapApiRoutes()
    {
        $api_router = app('Dingo\Api\Routing\Router');
        $api_router->group([
            'version'   => config('api.prefix'),
            'namespace' => $this->api_namespace,
        ], function ($router) {
            require base_path('routes/api.php');
        });
    }
}

文件夹结构如下:

file

笔者在以前的项目中,Route,都是以各个路由组在路由中定义,一旦一个项目浅浅庞大,路由也略显臃肿。

通过把路由规则分割写到不同的文件中, 这样一来, 就可以根据功能模块分开管理路由文件了. 此外, 你也可以简单的分割, 直接把 routes.php 中的定义拆散成多个文件, 通过 require 的方式引入.

那么这样路由分开多个文件后岂不是增加调用次数, 会不会影响性能? 答案是不必担心. 通过 Laravel 的命令:

php artisan route:cache  

生成路由缓存文件后, 路由只会读取缓存文件的路由规则, 因此不会影响性能, 这样做让开发更高效和规范.

© 著作权归作者所有

共有 人打赏支持
zhiqiangw
粉丝 12
博文 193
码字总数 142652
作品 0
郑州
程序员
Laravel 分割 routes.php 路由文件的最佳方式

Laravel 的路由功能很强大,路由规则默认都定义在 routes.php 文件中,但是随着项目越来越大,我们需要的定义的规则越来越多,如果几百上千个路由都定义在一个文件中,如何去维护?如果不同的...

mdoo
2016/09/18
14
0
Laravel创建第一个程序

1.在使用Laravel 入口文件是在laravle/public/index.php Controller是位于文件laravel/app/Http/Controllers View位于laravel/resources/Views Routes(路由)位于laravel/app/Http文件下。 2.......

小贵子_IOS
2016/05/10
32
0
laravel (5.1) & Ember.js (1.13.0) 的整合

Lavavel 不必过多介绍了, 作为全世界最流行的PHP框架,有着清晰的架构、完善的文档、丰富的工具等等,能够帮助开发者快速构建多页面web应用程序。 然而,随着技术的发展,web程序的另一面—...

Lee的白板报
2015/08/15
0
1
Laravel入门:MVC框架

本文基于Laravel 4.2编写。 路由Hello World 在app/routes.php里面添加下面代码,然后在浏览器里访问http:///helloworld可以见到结果。 视图(View) 理论上可以把所有代码都写在app/routes....

hyh2015
2016/04/07
98
0
基于 Laravel Route 的 ThinkSNS+ Component

在前面,我介绍了拓展类型,分别有 plus-compnent 和 plus-plugin 两个,这里重点讲以下如何实现 plus-component 的。 plus-component 是什么 就如同名字一样,plus 代表的是 ThinlSNS+ 程序...

thinksns
08/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Coding and Paper Letter(三十七)

资源整理。 1 Coding: 1.GDAL的node.js版本。 node gdal 2.R语言包echor,下载EPA许可设施的废水排放和空气排放数据。 echor 3.CPPTRAJ是一个旨在处理和分析分子动力学轨迹和从其分析中得出的...

胖胖雕
27分钟前
2
0
plsql developer如何创建新用户(users)

plsql developer如何创建新用户(users) 2017年05月04日 21:51:43 Alan_ZhQ 阅读数:14558 标签: plsql developer 更多 个人分类: plsql developer 版权声明:本文为博主原创文章,转载请...

linjin200
29分钟前
1
0
php安装编译时错误合集

php安装编译时错误合集 出现collect2: ld returned 1 exit status make: *** [sapi/cli/php] Error 1 出现此种错误最大可能是配置时出现了错误 libxml默认安装的路径是/usr/local,我把--wit...

alt_tab_jj
31分钟前
1
0
7.09-js保留小数点后两位

//num 是传过来的值,del是要保留几位 function valueFmt(num, del) { if (num != '') { if (del != 0) { num = parseFloat(num).toFixed(del); } var source = String(num).split("."); so......

静以修身2025
33分钟前
2
0
正则介绍_grep

10月16日任务 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下 grep基本用法 grep [-cinvABC] 'word' filename centos7.x版本的grep实则为grep --color=auto -c 显示匹配到的行数 [root@localhos......

robertt15
42分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部