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 相关文章推荐
Win2000+Apache+MySql+PHP4+PERL安装使用小结
Oct 09 PHP
一个PHP的String类代码
Apr 20 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
Jun 05 PHP
php一次性删除前台checkbox多选内容的方法
Sep 22 PHP
ubuntu12.04使用c编写php扩展模块教程分享
Dec 25 PHP
PHP入门经历和学习过程分享
Apr 11 PHP
Web程序工作原理详解
Dec 25 PHP
在PHP语言中使用JSON和将json还原成数组的方法
Jul 19 PHP
Zend Framework入门教程之Zend_View组件用法示例
Dec 09 PHP
由php中字符offset特征造成的绕过漏洞详解
Jul 07 PHP
php 数据结构之链表队列
Oct 17 PHP
php实现有序数组旋转后寻找最小值方法
Sep 27 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
11个PHP 分页脚本推荐
2011/08/15 PHP
查找php配置文件php.ini所在路径的二种方法
2014/05/26 PHP
PHP房贷计算器实例代码,等额本息,等额本金
2017/04/01 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
2020/01/23 PHP
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
jquery 页面滚动到底部自动加载插件集合
2014/01/31 Javascript
jQuery操作元素css样式的三种方法
2014/06/04 Javascript
Jquery和JS获取ul中li标签的实现方法
2016/06/02 Javascript
js实现非常棒的弹出div
2016/10/06 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
详解Vue路由开启keep-alive时的注意点
2017/06/20 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
浅谈React之状态(State)
2018/09/19 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
2019/05/09 Javascript
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
python实现简单的TCP代理服务器
2014/10/08 Python
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
python引用DLL文件的方法
2015/05/11 Python
Python文件及目录操作实例详解
2015/06/04 Python
详解Python中的元组与逻辑运算符
2015/10/13 Python
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
Python之str操作方法(详解)
2017/06/19 Python
Python测试人员需要掌握的知识
2018/02/08 Python
python查看模块安装位置的方法
2018/10/16 Python
python交易记录链的实现过程详解
2019/07/03 Python
python能否java成为主流语言吗
2020/06/22 Python
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
全球性的奢侈品梦工厂:Forzieri(福喜利)
2019/02/20 全球购物
会计学毕业生求职信
2014/06/25 职场文书
创先争优个人总结
2015/03/04 职场文书
2015年度员工自我评价范文
2015/03/11 职场文书
redis的list数据类型相关命令介绍及使用
2022/01/18 Redis