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 相关文章推荐
function.inc.php超越php
Dec 09 PHP
PHP网站基础优化方法小结
Sep 29 PHP
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
Nov 01 PHP
php一次性删除前台checkbox多选内容的方法
Sep 22 PHP
Codeigniter实现智能裁剪图片的方法
Jun 12 PHP
CodeIgniter输出中文乱码的两种解决办法
Jun 12 PHP
Destoon模板制作简明教程
Jun 20 PHP
一个经典的PHP验证码类分享
Nov 18 PHP
php中使用url传递数组的方法
Feb 11 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
Mar 18 PHP
XHProf报告字段含义的解析
May 17 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
May 20 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日历[测试通过]
2008/03/27 PHP
PHP用身份证号获取星座和生肖的方法
2013/11/07 PHP
Yii2中cookie用法示例分析
2016/07/18 PHP
php实现统计IP数及在线人数的示例代码
2020/07/22 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
jquery对表单操作2
2011/04/06 Javascript
js实现在字符串中提取数字
2013/11/05 Javascript
js中哈希表的几种用法总结
2014/01/28 Javascript
node.js中的fs.chown方法使用说明
2014/12/16 Javascript
JavaScript中对象介绍
2014/12/31 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
js实现交换运动效果的方法
2015/04/10 Javascript
浅谈JavaScript异常处理语句
2015/06/26 Javascript
JavaScript如何禁止Backspace键
2015/12/02 Javascript
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
2016/07/07 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
2016/08/29 Javascript
js实现自动图片轮播代码
2017/03/22 Javascript
antd form表单数据回显操作
2020/11/02 Javascript
js异步接口并发数量控制的方法示例
2020/11/22 Javascript
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
火车票抢票python代码公开揭秘!
2018/03/08 Python
Python爬虫实现验证码登录代码实例
2019/05/10 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
2020/03/04 Python
python 通过exifread读取照片信息
2020/12/24 Python
Annoushka英国官网:英国奢侈珠宝品牌
2018/10/20 全球购物
巴基斯坦购物网站:Goto
2019/03/11 全球购物
活动总结怎么写
2014/04/28 职场文书
媒体宣传策划方案
2014/05/25 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
员工工作能力评语
2014/12/31 职场文书
开工典礼致辞
2015/07/29 职场文书
CSS3实现三角形不断放大效果
2021/04/13 HTML / CSS
Python pandas求方差和标准差的方法实例
2021/08/04 Python
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫
MySQL数据库表约束讲解
2022/06/21 MySQL