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


Posted in PHP onAugust 04, 2016

前言

Laravel 的路由功能很强大,默认都是定义在 routes.php 文件中,随着项目越来越大,我们需要的定义的路由越来越多,想象一下,如果几百上千个路由都定义在一个文件中,如何去维护?也许还有不同的人都在同一个文件定义路由,这就造成了冲突,因此我们需要分割 routes.php 文件。

下面介绍一种很优雅的方式。

app/Providers/RouteServiceProvider.php map 方法中可以如下定义:

public function map(Router $router)
{
  $router->group(['namespace' => $this->namespace], function ($router) {
    //require app_path('Http/routes.php');
    foreach (glob(app_path('Http//Routes') . '/*.php') as $file) {
      $this->app->make('App\\Http\\Routes\\' . basename($file, '.php'))->map($router);
    }
  });
}

文件组织结构图如下:

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

这样它会遍历 app/Http/Routes/ 文件夹下的文件,遍历每个文件路由类的 map 方法,每个文件的结构都类似,

举个例子:

<?php
/**
 * Created by PhpStorm.
 * User: xl
 * Date: 2016/7/4
 * Time: 18:07
 */
namespace App\Http\Routes;

use Illuminate\Contracts\Routing\Registrar;

class HomeRoutes
{
  public function map(Registrar $router)
  {
    $router->group(['domain' => 'www.tanteng.me', 'middleware' => 'web'], function ($router) {
      $router->auth();
      $router->get('/', ['as' => 'home', 'uses' => 'IndexController@index']);
      $router->get('/blog', ['as' => 'index.blog', 'uses' => 'BlogController@index']);
      $router->get('/resume', ['as' => 'index.resume', 'uses' => 'IndexController@resume']);
      $router->get('/post', ['name' => 'post.show', 'uses' => 'ArticleController@show']);
      $router->get('/contact', ['as' => 'index.contact', 'uses' => 'IndexController@contact']);
      $router->post('/contact/comment', ['uses' => 'IndexController@postComment']);
      $router->get('/travel', ['as' => 'index.travel', 'uses' => 'TravelController@index']);
      $router->get('/travel/latest', ['as' => 'travel.latest', 'uses' => 'TravelController@latest']);
      $router->get('/travel/{destination}/list', ['as' => 'travel.destination', 'uses' => 'TravelController@travelList']);
      $router->get('/travel/{slug}', ['uses' => 'TravelController@travelDetail']);
      $router->get('/sitemap.xml', ['as' => 'index.sitemap', 'uses' => 'IndexController@sitemap']);
    });
  }
}

把路由规则都写到每个文件的 map 方法中,这样一来,就实现了很好的 routes.php 文件的分开管理。此外,你也可以简单的分割,直接把 routes.php 中的定义拆散成多个文件,通过 require 的方式引入,但是哪个更好,一目了然。

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

php artisan route:cache

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

好了,以上就是Laravel路由文件(routes.php)最佳分割方式的全部内容,希望对大家学习Laravel有所帮助。也希望大家多多支持三水点靠木。

PHP 相关文章推荐
探讨:使用XMLSerialize 序列化与反序列化
Jun 08 PHP
php while循环得到循环次数
Oct 26 PHP
Yii核心组件AssetManager原理分析
Dec 02 PHP
php启用sphinx全文搜索的实现方法
Dec 24 PHP
php+ajax实时刷新简单实例
Feb 25 PHP
通过PHP自带的服务器来查看正则匹配结果的方法
Dec 24 PHP
mysql_escape_string()函数用法分析
Apr 25 PHP
php获取今日开始时间和结束时间的方法
Feb 27 PHP
浅析PHP数据导出知识点
Feb 17 PHP
thinkphp5使用无限极分类
Feb 18 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 PHP
PHP Trait功能与用法实例分析
Jun 03 PHP
基于Swoole实现PHP与websocket聊天室
Aug 03 #PHP
浅析php如何实现App常用的秒发功能
Aug 03 #PHP
php微信开发之带参数二维码的使用
Aug 03 #PHP
PHP支付系统设计与典型案例分享
Aug 02 #PHP
php微信支付接口开发程序
Aug 02 #PHP
比较完整的微信开发php代码
Aug 02 #PHP
微信利用PHP创建自定义菜单的方法
Aug 01 #PHP
You might like
PHP4.04简明安装
2006/10/09 PHP
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
php字符串的替换,分割和连接方法
2016/05/23 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
关于文本框的一些限制控制总结~~
2010/04/15 Javascript
this和执行上下文实现代码
2010/07/01 Javascript
jQuery动画效果-slideUp slideDown上下滑动示例代码
2013/08/28 Javascript
jquery map方法使用示例
2014/04/23 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
使用伪命名空间封装保护独自创建的对象方法
2016/08/04 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
详解Node 定时器
2018/02/26 Javascript
详解vue的diff算法原理
2018/05/20 Javascript
如何解决.vue文件url引用文件的问题
2019/01/18 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
2019/10/26 Javascript
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
详解Django框架中用context来解析模板的方法
2015/07/20 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
python opencv判断图像是否为空的实例
2019/01/26 Python
python列表使用实现名字管理系统
2019/01/30 Python
python3.6+django2.0+mysql搭建网站过程详解
2019/07/24 Python
不到20行实现Python代码即可制作精美证件照
2020/04/24 Python
零基础学python应该从哪里入手
2020/08/11 Python
Python LMDB库的使用示例
2021/02/14 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
1688平价精选商城:阿里集团旗下,工厂出厂价格直销
2017/04/24 全球购物
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
标准自荐信范文
2014/01/29 职场文书
安娜卡列尼娜观后感
2015/06/11 职场文书
高中升旗仪式主持词
2015/07/03 职场文书
校运会班级霸气口号
2015/12/24 职场文书
Oracle删除归档日志及添加定时任务
2022/06/28 Oracle