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 相关文章推荐
web方式ftp
Oct 09 PHP
一段php加密解密的代码
Oct 09 PHP
六酷社区论坛HOME页清新格调免费版 下载
Mar 07 PHP
检测png图片是否完整的php代码
Sep 06 PHP
PHP基础之运算符的使用方法
Apr 28 PHP
PHP 解决session死锁的方法
Jun 20 PHP
ThinkPHP之getField详解
Jun 20 PHP
PHP图形计数器程序显示网站用户浏览量
Jul 20 PHP
php获得文件夹下所有文件的递归算法的简单实例
Nov 01 PHP
PHP 实现页面静态化的几种方法
Jul 23 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
May 13 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
Oct 16 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 limit的优化
2008/01/10 PHP
php实现的简单日志写入函数
2015/03/31 PHP
php 问卷调查结果统计
2015/10/08 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
ThinkPHP5&5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
2011/07/04 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
jQuery实现简洁的导航菜单效果
2015/11/23 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
JavaScript编写一个简易购物车功能
2016/09/17 Javascript
js遍历获取表格内数据的方法(必看)
2017/04/06 Javascript
基于JavaScript表单脚本(详解)
2017/10/18 Javascript
详解写好JS条件语句的5条守则
2019/02/28 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
Vue父子传递实例讲解
2020/02/14 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
Python日期操作学习笔记
2008/10/07 Python
python实现获取序列中最小的几个元素
2014/09/25 Python
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
Python OpenCV实现图片上输出中文
2018/01/22 Python
取numpy数组的某几行某几列方法
2018/04/03 Python
Python数据可视化之画图
2019/01/15 Python
python print出共轭复数的方法详解
2019/06/25 Python
python实现邮件发送功能
2019/08/10 Python
python温度转换华氏温度实现代码
2020/12/06 Python
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
HTML5的自定义属性data-*详细介绍和JS操作实例
2014/04/10 HTML / CSS
DC Shoes俄罗斯官网:美国滑板鞋和服饰品牌
2020/08/19 全球购物
遇到的Mysql的面试题
2014/06/29 面试题
志愿者服务感言
2014/02/27 职场文书
岗位职责怎么写
2014/03/14 职场文书
房屋鉴定委托书范本
2014/09/23 职场文书
群众路线教育实践活动方案
2014/10/31 职场文书