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 相关文章推荐
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
Oct 29 PHP
php入门教程 精简版
Dec 13 PHP
php获取服务器信息的实现代码
Feb 04 PHP
PHP中的reflection反射机制测试例子
Aug 05 PHP
PHP中使用CURL获取页面title例子
Jan 07 PHP
解读PHP中的垃圾回收机制
Aug 10 PHP
php实现跨域提交form表单的方法【2种方法】
Oct 17 PHP
在php的yii2框架中整合hbase库的方法
Sep 20 PHP
PHP使用ajax的post方式下载excel文件简单示例
Aug 06 PHP
Laravel定时任务的每秒执行代码
Oct 22 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 PHP
PHP的重载使用魔术方法代码实例详解
Feb 26 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
php 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
php中异常处理方法小结
2015/01/09 PHP
用JavaScript脚本实现Web页面信息交互
2006/12/21 Javascript
用javascript实现改变TEXTAREA滚动条和按钮的颜色,以及怎样让滚动条变得扁平
2007/04/20 Javascript
jquery 3D球状导航的文章分类
2010/07/06 Javascript
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
javascript实现获取浏览器版本、操作系统类型
2015/01/29 Javascript
理解JS事件循环
2016/01/07 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
js编写三级联动简单案例
2016/12/21 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
2016/12/25 Javascript
微信小程序获取循环元素id以及wx.login登录操作
2017/08/17 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
vue模式history下在iis中配置流程
2019/04/17 Javascript
python3.0 模拟用户登录,三次错误锁定的实例
2017/11/02 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
python多线程同步实例教程
2019/08/11 Python
Python进阶之迭代器与迭代器切片教程
2020/01/29 Python
python怎么对数字进行过滤
2020/07/05 Python
python 8种必备的gui库
2020/08/27 Python
程序设计HTML5 Canvas API
2013/04/08 HTML / CSS
html5使用Drag事件编辑器拖拽上传图片的示例代码
2017/08/22 HTML / CSS
电脑饰品店的创业计划书
2014/01/21 职场文书
放飞蜻蜓反思
2014/02/05 职场文书
励志演讲稿800字
2014/08/21 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
个人收入证明范本
2015/06/12 职场文书
同学聚会感言一句话
2015/07/30 职场文书
python爬虫之selenium库的安装及使用教程
2021/05/23 Python
详解Spring事件发布与监听机制
2021/06/30 Java/Android
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers