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&amp;mysql(五)
Oct 09 PHP
php下实现在指定目录搜索指定类型文件的函数
Oct 03 PHP
php MsSql server时遇到的中文编码问题
Jun 11 PHP
php笔记之:php函数range() round()和list()的使用说明
Apr 26 PHP
使用php验证复选框有效性的示例
Nov 13 PHP
PHP 实现类似js中alert() 提示框
Mar 18 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
Jul 08 PHP
详解PHP的Yii框架中自带的前端资源包的使用
Mar 31 PHP
Yii中的cookie的发送和读取
Jul 27 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
Jun 05 PHP
php生成HTML文件的类方法
Oct 11 PHP
Laravel 创建可以传递参数 Console服务的例子
Oct 14 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
解析thinkphp中的导入文件标签
2013/06/20 PHP
php+xml编程之SimpleXML的应用实例
2015/01/24 PHP
PHP表单数据写入MySQL数据库的代码
2016/05/31 PHP
PDO::exec讲解
2019/01/28 PHP
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
你必须知道的Javascript知识点之&quot;深入理解作用域链&quot;的介绍
2013/04/23 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
详解Vue中使用插槽(slot)、聚类插槽
2019/04/12 Javascript
优雅的处理vue项目异常实战记录
2019/06/05 Javascript
JS一次前端面试经历记录
2020/03/19 Javascript
python抓取网页时字符集转换问题处理方案分享
2014/06/19 Python
Python实现Linux下守护进程的编写方法
2014/08/22 Python
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
使用Python编写一个在Linux下实现截图分享的脚本的教程
2015/04/24 Python
windows下python连接oracle数据库
2017/06/07 Python
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
python爬虫超时的处理的实例
2018/12/19 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
python删除文件夹下相同文件和无法打开的图片
2019/07/16 Python
python 实现视频 图像帧提取
2019/12/10 Python
CSS3 实现雷达扫描图的示例代码
2020/09/21 HTML / CSS
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
求职信的要素有哪些呢
2013/12/26 职场文书
中学教师管理制度
2014/01/14 职场文书
幼儿园小班教师寄语
2014/04/03 职场文书
淘宝客服专员岗位职责
2014/04/11 职场文书
爱国主义教育演讲稿
2014/08/26 职场文书
医德医魂心得体会
2014/09/11 职场文书
2015年幼儿园新年寄语
2014/12/08 职场文书
2016年大学生暑期社会实践方案
2015/11/26 职场文书
2016关于预防职务犯罪的心得体会
2016/01/21 职场文书
小学毕业教师寄语
2019/06/21 职场文书
Python办公自动化之Excel(中)
2021/05/24 Python