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 相关文章推荐
PHP中,文件上传
Dec 06 PHP
php 进度条实现代码
Mar 10 PHP
基于Zookeeper的使用详解
May 02 PHP
php设计模式之观察者模式的应用详解
May 21 PHP
PHP操作MongoDB GridFS 存储文件的详解
Jun 20 PHP
php中strtotime函数用法详解
Nov 15 PHP
php正则表达式学习笔记
Nov 13 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
Mar 21 PHP
php字符串的替换,分割和连接方法
May 23 PHP
PHP目录操作实例总结
Sep 27 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
Jul 10 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互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
JQuery开发的数独游戏代码
2010/10/29 Javascript
JavaScript单元测试ABC
2012/04/12 Javascript
js中split函数的使用方法说明
2013/12/26 Javascript
checkbox全选所涉及到的知识点介绍
2013/12/31 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
JavaScript函数学习总结以及相关的编程习惯指南
2015/11/16 Javascript
基于jQuery实现响应式圆形图片轮播特效
2015/11/25 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
jQuery包裹节点用法完整示例
2016/09/13 Javascript
AngularJS中table表格基本操作示例
2017/10/10 Javascript
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
在vue里面设置全局变量或数据的方法
2018/03/09 Javascript
JavaScript引用类型Array实例分析
2018/07/24 Javascript
深入理解javascript中的this
2021/02/08 Javascript
[59:42]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python3.6+opencv3.4实现鼠标交互查看图片像素
2018/02/26 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
numpy ndarray 取出满足特定条件的某些行实例
2019/12/05 Python
python中turtle库的简单使用教程
2020/11/11 Python
mysql有关权限的表都有哪几个
2015/04/22 面试题
日期和时间问题
2015/01/04 面试题
财产公证书格式
2014/04/10 职场文书
《祁黄羊》教学反思
2014/04/22 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
护士节策划方案
2014/05/19 职场文书
向国旗敬礼活动总结范文2014
2014/09/27 职场文书
西岭雪山导游词
2015/02/06 职场文书
写给孩子的新学期寄语
2015/02/27 职场文书
我的生日感言
2015/08/03 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书
OpenCV实现普通阈值
2021/11/17 Java/Android
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android