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 相关文章推荐
基于mysql的论坛(4)
Oct 09 PHP
Windows下安装Memcached的步骤说明
Apr 25 PHP
php 获取select下拉列表框的值
May 08 PHP
PHP模块 Memcached功能多于Memcache
Jun 14 PHP
php中对2个数组相加的函数
Jun 24 PHP
PHP中数据库单例模式的实现代码分享
Aug 21 PHP
重新认识php array_merge函数
Aug 31 PHP
fckeditor上传文件按日期存放及重命名方法
May 22 PHP
深入浅析PHP的session反序列化漏洞问题
Jun 15 PHP
php面试中关于面向对象的相关问题
Feb 13 PHP
Laravel 读取 config 下的数据方法
Oct 13 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 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投票程序源码
2007/03/11 PHP
spl_autoload_register与autoload的区别详解
2013/06/03 PHP
PHP清除缓存的几种方法总结
2017/09/12 PHP
PHP实现爬虫爬取图片代码实例
2021/03/03 PHP
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
JavaScript Event学习第十章 一些可替换的事件对
2010/02/10 Javascript
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
jquery实现先淡出再折叠收起的动画效果
2015/08/07 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
jquery实现自适应banner焦点图
2017/02/16 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
2018/03/17 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
详解基于Node.js的HTTP/2 Server实践
2018/05/31 Javascript
VUE注册全局组件和局部组件过程解析
2019/10/10 Javascript
详解vue页面首次加载缓慢原因及解决方案
2019/11/06 Javascript
vue如何使用async、await实现同步请求
2019/12/09 Javascript
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
2018/09/04 Python
python的常用模块之collections模块详解
2018/12/06 Python
python3实现表白神器
2019/04/09 Python
浅谈Python编程中3个常用的数据结构和算法
2019/04/30 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
2020/09/17 Python
Python+unittest+DDT实现数据驱动测试
2020/11/30 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
viagogo意大利票务平台:演唱会、体育比赛、戏剧门票
2018/01/26 全球购物
美国椅子和沙发制造商:La-Z-Boy
2020/10/25 全球购物
咨询公司各岗位职责
2013/12/02 职场文书
高三生物教学反思
2014/01/25 职场文书
运动员入场前导词
2015/07/20 职场文书
民间借贷纠纷答辩状
2015/08/03 职场文书