YII分模块加载路由的实现方法


Posted in PHP onOctober 01, 2018

起因。因为项目比较大了之后划了很多模块。就使得config下面的路由文件变得很庞大,变得不好维护。这个时候就想如果可以把路由拆分到不同模块去自己管理,就会变得清晰很多。

拆了之后项目配置结构如下

YII分模块加载路由的实现方法

新增了一个modules.php来管理模块的加载

调整之前 web.php的模块加载配置如下

'modules' => [
  'setup' => [
    'class' => 'appcomponents\modules\setup\Module',
  ],
  'shareorder' => [
    'class' => 'appcomponents\modules\shareorder\Module',
  ],
]

调整之后 web.php模块配置如下

'modules' => require (__DIR__).'/modules.php',

modules.php里面配置如下

return [
  'setup' => [
    'class' => 'appcomponents\modules\setup\Module',
  ],
  'shareorder' => [
    'class' => 'appcomponents\modules\shareorder\Module',
  ],
];

然后修改rules.php

$default = [


];
$modules = require __DIR__.'./modules.php';
$roles = [];
foreach ($modules as $module)
{
  $class = new ReflectionClass($module['class']);
  $filePath = $class->getFileName();
  $filePath = str_replace('Module','rules',$filePath);
  if(file_exists($filePath))
  {
    $role = require $filePath;
    $roles = array_merge($roles,$role);
  }
}
return array_merge($roles,$default);。

利用反射找到每个模块的真实路径,然后加载当前模块下的rules.php文件

每个模块的目录结构

YII分模块加载路由的实现方法

其中Modules.php是配置当前模块,加载命名空间等。rules.php为当前模块的下的路由配置

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php学习笔记之 函数声明(二)
Jun 09 PHP
兼容firefox,chrome的网页灰度效果
Aug 08 PHP
JSON在PHP中的应用介绍
Sep 08 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
Dec 11 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
Nov 26 PHP
PHP和javascript常用正则表达式及用法实例
Jul 01 PHP
PHP中的静态变量及static静态变量使用详解
Nov 05 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
Mar 21 PHP
PHP简单遍历对象示例
Sep 28 PHP
PHP版微信小店接口开发实例
Nov 12 PHP
PHP大文件分块上传功能实例详解
Jul 22 PHP
深入分析PHP设计模式
Jun 15 PHP
php实现微信公众号企业转账功能
Oct 01 #PHP
详解json在php中的应用
Sep 30 #PHP
php实现数组重复数字统计实例
Sep 30 #PHP
PHP APP微信提现接口代码
Sep 30 #PHP
PHP实现微信提现功能
Sep 30 #PHP
PHP实现微信商户支付企业付款到零钱功能
Sep 30 #PHP
Thinkphp 5.0实现微信企业付款到零钱
Sep 30 #PHP
You might like
php5 mysql分页实例代码
2008/04/10 PHP
浅析php中三个等号(===)和两个等号(==)的区别
2013/08/06 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
2020/04/06 PHP
将函数的实际参数转换成数组的方法
2010/01/25 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
js闭包用法实例详解
2016/12/13 Javascript
Javascript中document.referrer隐藏来源的方法
2017/01/16 Javascript
jQuery实现的简单悬浮层功能完整实例
2017/01/23 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
js中的闭包学习心得
2018/02/06 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
JS中min函数实例讲解
2019/02/18 Javascript
详解vue-router 动态路由下子页面多页共活的解决方案
2019/12/22 Javascript
JavaScript setInterval()与setTimeout()计时器
2019/12/27 Javascript
js实现搜索提示框效果
2020/09/05 Javascript
小程序实现可拖动的悬浮按钮
2020/09/07 Javascript
在vue中使用image-webpack-loader实例
2020/11/12 Javascript
[01:07:13]TNC vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
在Python中使用NLTK库实现对词干的提取的教程
2015/04/08 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
浅谈python爬虫使用Selenium模拟浏览器行为
2018/02/23 Python
利用arcgis的python读取要素的X,Y方法
2018/12/22 Python
python批量下载抖音视频
2019/06/17 Python
详解python tcp编程
2020/08/24 Python
Html5写一个简单的俄罗斯方块小游戏
2019/12/03 HTML / CSS
全球独特生活方式产品和礼品购物网站:AHAlife
2018/09/18 全球购物
开工庆典邀请函范文
2014/01/16 职场文书
团队拓展活动方案
2014/08/28 职场文书
法制教育演讲稿
2014/09/10 职场文书
毕业生实习期转正自我鉴定
2014/09/26 职场文书
办公室班子四风问题对照检查材料
2014/10/04 职场文书
产品调价通知函
2015/04/20 职场文书
高三毕业感言
2015/07/30 职场文书
导游词之上海杜莎夫人蜡像馆
2019/11/22 职场文书