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 相关文章推荐
PHP4实际应用经验篇(9)
Oct 09 PHP
UCenter Home二次开发指南
May 28 PHP
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
Jul 04 PHP
PHP程序员最常犯的11个MySQL错误小结
Nov 20 PHP
PHP计数器的实现代码
Jun 08 PHP
使用php计算排列组合的方法
Nov 13 PHP
php 邮件发送问题解决
Mar 22 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
Jun 23 PHP
php专用数组排序类ArraySortUtil用法实例
Apr 03 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
Feb 23 PHP
YII框架模块化处理操作示例
Apr 26 PHP
PHP如何使用array_unshift()在数组开头插入元素
Sep 01 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
apache配置虚拟主机的方法详解
2013/06/17 PHP
php使用pack处理二进制文件的方法
2014/07/03 PHP
简单的php+mysql聊天室实现方法(附源码)
2016/01/05 PHP
PHP6连接SQLServer2005的三部曲
2016/04/15 PHP
Yii2 输出xml格式数据的方法
2016/05/03 PHP
比较完整的微信开发php代码
2016/08/02 PHP
经典的解除许多网站无法复制文字的绝招
2006/12/31 Javascript
通过javascript设置css属性的代码
2009/12/28 Javascript
JS自动适应的图片弹窗实例
2013/06/29 Javascript
查找iframe里元素的方法可传参
2013/09/11 Javascript
JavaScript中var关键字的使用详解
2015/08/14 Javascript
js数组去重的5种算法实现
2015/11/04 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
vue.js实现价格格式化的方法
2017/05/23 Javascript
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
Vue数据绑定实例写法
2019/08/06 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
2019/09/29 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
2020/05/24 Javascript
Python通过matplotlib画双层饼图及环形图简单示例
2017/12/15 Python
django输出html内容的实例
2018/05/27 Python
浅谈Django的缓存机制
2018/08/23 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
HTML5实践-图片设置成灰度图
2012/11/12 HTML / CSS
详解通过HTML5 Canvas实现图片的平移及旋转变化的方法
2016/03/22 HTML / CSS
澳大利亚百货公司:David Jones
2018/02/08 全球购物
linux面试题参考答案(2)
2015/12/06 面试题
境外导游求职信
2014/02/27 职场文书
缅怀革命先烈演讲稿
2014/05/14 职场文书
房贷工资证明范本
2015/06/12 职场文书