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的session功能评述(一)
Oct 09 PHP
php5 mysql分页实例代码
Apr 10 PHP
PHP中MD5函数使用实例代码
Jun 07 PHP
php对mongodb的扩展(初出茅庐)
Nov 11 PHP
解析zend Framework如何自动加载类
Jun 28 PHP
PHP实现生成唯一编号(36进制的不重复编号)
Jul 01 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
Dec 09 PHP
php简单实现发送带附件的邮件
Jun 10 PHP
php cookie用户登录的详解及实例代码
Jan 03 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
May 20 PHP
简单实现php上传文件功能
Sep 21 PHP
解决php extension 加载顺序问题
Aug 16 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加密解密的代码
2006/10/09 PHP
DedeCms模板安装/制作概述
2007/03/11 PHP
php中的strpos使用示例
2014/02/27 PHP
PHP编程 SSO详细介绍及简单实例
2017/01/13 PHP
Javascript 类、命名空间、代码组织代码
2011/07/31 Javascript
IE与FF下javascript获取网页及窗口大小的区别详解
2014/01/14 Javascript
jquery实现可拖拽弹出层特效
2015/01/04 Javascript
CSS3实现动态背景登录框的代码
2015/07/28 Javascript
Ajax分页插件Pagination从前台jQuery到后端java总结
2016/07/22 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
详解Vue 方法与事件处理器
2017/06/20 Javascript
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
nuxt 每个页面head标签内容设置方式
2020/11/05 Javascript
Python求导数的方法
2015/05/09 Python
Zabbix实现微信报警功能
2016/10/09 Python
python excel使用xlutils类库实现追加写功能的方法
2018/05/02 Python
Python绘制3D图形
2018/05/03 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
python利用多种方式来统计词频(单词个数)
2019/05/27 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
pytorch简介
2020/11/11 Python
python 实现表情识别
2020/11/21 Python
可以在一个PHP文件里面include另外一个PHP文件两次吗
2015/05/22 面试题
应届生财务管理求职信
2013/11/06 职场文书
竞聘上岗演讲稿范文
2014/01/10 职场文书
超市总经理岗位职责
2014/02/02 职场文书
房地产广告词大全
2014/03/19 职场文书
五分钟演讲稿
2014/04/30 职场文书
房地产开发项目建议书
2014/05/16 职场文书
2014年社区综治工作总结
2014/11/17 职场文书
2014年教研组工作总结
2014/11/26 职场文书
《中华上下五千年》读后感3篇
2019/11/29 职场文书
Java如何实现通过键盘输入一个数组
2022/02/15 Java/Android