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 相关文章推荐
第十三节 对象串行化 [13]
Oct 09 PHP
PHP的中问验证码
Nov 25 PHP
php 获取本机外网/公网IP的代码
May 09 PHP
Apache 配置详解(最好的APACHE配置教程)
Jul 04 PHP
浅析PHP的ASCII码转换类
Jul 05 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
Jun 19 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
Sep 16 PHP
PHP封装的Twitter访问类实例
Jul 18 PHP
PHP addcslashes()函数讲解
Feb 03 PHP
Laravel Validator自定义错误返回提示消息并在前端展示
May 09 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
Jan 22 PHP
php实现对短信验证码发送次数的限制实例讲解
Mar 04 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调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
浅谈PHP链表数据结构(单链表)
2016/06/08 PHP
WAF的正确bypass
2017/01/05 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
用jquery设置按钮的disabled属性的实现代码
2010/11/28 Javascript
javascript操作字符串的原生方法
2014/12/22 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
js正则匹配出所有图片及图片地址src的方法
2015/06/08 Javascript
深入解析JavaScript中的数字对象与字符串对象
2015/10/21 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
2017/01/21 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
2017/02/08 Javascript
Bootstrap模态框插件使用详解
2017/05/11 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
基于jQuery的表单填充实例
2017/08/22 jQuery
微信小程序中post方法与get方法的封装
2017/09/26 Javascript
[41:17]完美世界DOTA2联赛PWL S3 access vs CPG 第二场 12.13
2020/12/17 DOTA
讲解Python中for循环下的索引变量的作用域
2015/04/15 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
2016/06/29 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
python 拼接文件路径的方法
2018/10/23 Python
python 找出list中最大或者最小几个数的索引方法
2018/10/30 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
python变量的作用域是什么
2020/05/26 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
法国房车租赁网站:Yescapa
2019/08/26 全球购物
alice McCALL官网:澳大利亚时尚品牌
2020/11/16 全球购物
乡镇干部十八大感言
2014/02/17 职场文书
感恩父母的演讲稿
2014/05/06 职场文书
开工仪式策划方案
2014/05/23 职场文书
学校安全教育月活动总结
2014/07/07 职场文书
自主招生学校推荐信
2014/09/26 职场文书
群众路线教育实践活动剖析材料
2014/09/30 职场文书
践行党的群众路线心得体会
2014/11/05 职场文书
七个Python必备的GUI库
2021/04/27 Python