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 相关文章推荐
多数据表共用一个页的新闻发布
Oct 09 PHP
检测png图片是否完整的php代码
Sep 06 PHP
简单的PHP多图上传小程序代码
Jul 17 PHP
一漂亮的PHP图片验证码实例
Mar 21 PHP
ThinkPHP中处理表单中的注意事项
Nov 22 PHP
php实现根据词频生成tag云的方法
Apr 17 PHP
基于thinkPHP框架实现留言板的方法
Oct 17 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
Mar 14 PHP
PHP如何通过表单直接提交大文件详解
Jan 08 PHP
实例介绍PHP删除数组中的重复元素
Mar 03 PHP
PHP7引入的"??"和"?:"的区别讲解
Apr 08 PHP
详解如何实现Laravel的服务容器的方法示例
Apr 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
php实现mysql同步的实现方法
2009/10/21 PHP
PHP下通过file_get_contents的代理使用方法
2011/02/16 PHP
php中引用&的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
php封装单文件上传到数据库(路径)
2017/10/15 PHP
checkbox设置复选框的只读效果不让用户勾选
2013/08/12 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
简单理解JavaScript中的封装与继承特性
2016/03/19 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
基于Vue.js 2.0实现百度搜索框效果
2020/12/28 Javascript
JS库 Highlightjs 添加代码行号的实现代码
2017/09/13 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
2018/02/27 Javascript
详解vue组件开发脚手架
2018/06/15 Javascript
Jquery+javascript实现支付网页数字键盘
2020/12/21 jQuery
使用python实现拉钩网上的FizzBuzzWhizz问题示例
2014/05/05 Python
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
python开发之str.format()用法实例分析
2016/02/22 Python
浅谈Python的文件类型
2016/05/30 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
python检索特定内容的文本文件实例
2018/06/05 Python
python 读取dicom文件,生成info.txt和raw文件的方法
2019/01/24 Python
Python3基础教程之递归函数简单示例
2019/06/07 Python
python requests指定出口ip的例子
2019/07/25 Python
python 命名规范知识点汇总
2020/02/14 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
《中华少年》教学反思
2014/02/15 职场文书
幼儿园教学随笔感言
2014/02/23 职场文书
保证书格式范文
2014/04/28 职场文书
师范生求职自荐信
2014/06/14 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
SpringBoot详解执行过程
2022/07/15 Java/Android