Laravel - routes.php 最佳分割方式

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

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

public function map(Router $router){

          $router->group(['namespace'=>$this->namespace],function($router) {

                      foreach(glob(app_path('Http//Routes') .'/*.php') as $file) {

                              $this->app->make('App\\Http\\Routes\\'. basename($file,'.php'))->map($router);

                      }

          });

}

文件组织结构图如下:


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


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

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

php artisan route:cache

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,246评论 19 139
  • 路由 路由(routing)就是通过互联的网络把信息从源地址传输到目的地址的活动。路由发生在OSI网络参考模型中的...
    Dearmadman阅读 2,897评论 2 9
  • 0.1配置1.模板继承2.控制器3.git4.支付宝支付的流程5.路由6.中间件7.请求8.laravel 学习笔...
    云龙789阅读 850评论 0 5
  • 感恩今天妹妹陪我逛街选购礼物*感恩金钱宝贝给我丰盛富足的生活条件,让我能给家人朋友选购礼物,让商家能够赚取利润生活...
    晴晴zhang阅读 131评论 0 0
  • 我被自己困住了 慌张 望着外面的天 阳光明媚着别人的笑脸 隐蔽的我 更低到无边 于是我锁住我的眼泪 扬起僵硬的脸 ...
    李锵锵阅读 228评论 3 3