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中ob(Output Buffer 输出缓冲)函数使用方法
Jul 21 PHP
php面向对象全攻略 (十六) 对象的串行化
Sep 30 PHP
劣质的PHP代码简化
Feb 08 PHP
php smarty函数扩展
Mar 15 PHP
php skymvc 一款轻量、简单的php
Jun 28 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
Jul 16 PHP
PHP实现根据浏览器跳转不同语言页面代码
Aug 02 PHP
PHP实现定时执行任务的方法
Oct 05 PHP
php获取CSS文件中图片地址并下载到本地的方法
Dec 02 PHP
smarty模板引擎从配置文件中获取数据的方法
Jan 22 PHP
PHP简单判断字符串是否包含另一个字符串的方法
Mar 25 PHP
PHP批斗大会之缺失的异常详解
Jul 09 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根据某字段对多维数组进行排序的方法
2015/03/07 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
Laravel 创建可以传递参数 Console服务的例子
2019/10/14 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
理解Javascript_01_理解内存分配原理分析
2010/10/11 Javascript
JavaScript起点(严格模式深度了解)
2013/01/28 Javascript
document.documentElement的一些使用技巧
2013/04/18 Javascript
Js+Jq获取URL参数的集中方法示例代码
2014/05/20 Javascript
javascript实现简单查找与替换的方法
2015/07/22 Javascript
js+canvas简单绘制圆圈的方法
2016/01/28 Javascript
Bootstrap布局之栅格系统详解
2016/06/13 Javascript
AngularJS入门教程之过滤器详解
2016/08/19 Javascript
jQuery监听文件上传实现进度条效果的方法
2016/10/16 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
nodejs高大上的部署方式(PM2)
2018/09/11 NodeJs
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
微信小程序API—获取定位的详解
2019/04/30 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
Vue实现图片轮播组件思路及实例解析
2020/05/11 Javascript
微信小程序实现点击页面出现文字
2020/09/21 Javascript
Python实现读取txt文件并转换为excel的方法示例
2018/05/17 Python
numpy和pandas中数组的合并、拉直和重塑实例
2019/06/28 Python
django框架实现模板中获取request 的各种信息示例
2019/07/01 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
Python列表的深复制和浅复制示例详解
2021/02/12 Python
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
压铸汽车模型收藏家:Diecastmodelswholesale.com
2016/12/21 全球购物
Expedia爱尔兰:酒店、机票、租车及廉价假期
2017/01/02 全球购物
Joules美国官网:出色的英国风格
2017/10/30 全球购物
BIFFI美国站:意大利BIFFI BOUTIQUES豪华多品牌时装零售公司
2020/02/11 全球购物
毕业生捐书活动倡议书
2015/04/27 职场文书
六年级作文之家庭作文
2019/12/12 职场文书
微软官方消息,在 2023 年 4 月 11 日之后微软将不再为 Office 2013 和 Skype for Business 2015 提供安全更新
2022/04/21 数码科技