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 相关文章推荐
PHP的FTP学习(二)[转自奥索]
Oct 09 PHP
discuz安全提问算法
Jun 06 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
Nov 02 PHP
PHP的explode和implode的使用说明
Jul 17 PHP
简单的cookie计数器实现源码
Jun 07 PHP
php日历制作代码分享
Jan 20 PHP
php编写批量生成不重复的卡号密码代码
May 14 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
Jun 12 PHP
PHP三种方式实现链式操作详解
Jan 21 PHP
Laravel定时任务的每秒执行代码
Oct 22 PHP
php 使用expat方式解析xml文件操作示例
Nov 26 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 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
PHP Undefined index报错的修复方法
2011/07/17 PHP
PHP中的正则表达式函数介绍
2012/02/27 PHP
php ZipArchive压缩函数详解实例
2013/11/06 PHP
ThinkPHP添加更新标签的方法
2014/12/05 PHP
Yii 2.0在Grid中格式化时间方法示例
2017/06/06 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
yii2的restful api路由实例详解
2019/05/14 PHP
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
JavaScript 验证码的实例代码(附效果图)
2013/03/22 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
2013/11/25 Javascript
jquery map方法使用示例
2014/04/23 Javascript
javascript数组操作方法小结和3个属性详细介绍
2014/07/05 Javascript
JavaScript中Object.prototype.toString方法的原理
2016/02/24 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
2016/06/08 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
jQuery实现查看图片功能
2020/12/01 jQuery
[02:05]2014DOTA2国际邀请赛 BBC外卡赛赛后总结
2014/07/09 DOTA
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
Python 从列表中取值和取索引的方法
2018/12/25 Python
python配置grpc环境
2019/01/01 Python
浅析使用Python搭建http服务器
2019/10/27 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
2020/05/15 Python
一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
2020/07/03 Python
Soft Cotton捷克:来自爱琴海棉花的浴袍
2017/02/01 全球购物
一年级班主任寄语
2014/01/19 职场文书
经典广告词大全
2014/03/14 职场文书
交通文明倡议书
2014/05/16 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
2016幼儿园新学期寄语
2015/12/03 职场文书
2016年社区植树节活动总结
2016/03/16 职场文书
MySQL去除重叠时间求时间差和的实现
2021/08/23 MySQL
JavaScript数组 几个常用方法总结
2021/11/11 Javascript
详解在SQLPlus中实现上下键翻查历史命令的功能
2022/03/18 SQL Server
SQL中的连接查询详解
2022/06/21 SQL Server