博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
YII分模块加载路由
阅读量:5869 次
发布时间:2019-06-19

本文共 1100 字,大约阅读时间需要 3 分钟。

起因。因为项目比较大了之后划了很多模块。就使得config下面的路由文件变得很庞大,变得不好维护。这个时候就想如果可以把路由拆分到不同模块去自己管理,就会变得清晰很多。
拆了之后项目配置结构如下

clipboard.png

新增了一个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文件

每个模块的目录结构

clipboard.png

其中Modules.php是配置当前模块,加载命名空间等。rules.php为当前模块的下的路由配置

转载地址:http://ttxnx.baihongyu.com/

你可能感兴趣的文章
Android View.onMeasure方法的理解
查看>>
2015第49周日
查看>>
Node.js 爬虫初探
查看>>
Android传感器应用——重力传感器实现滚动的弹球
查看>>
CSS-下拉导航条
查看>>
hdu1005 Number Sequence(寻找循环节)
查看>>
poj 1273 Drainage Ditches
查看>>
java nio 缓冲区(一)
查看>>
ABP理论学习之仓储
查看>>
Duplicate复制数据库并创建物理StandBy(spfile+不同实例名+不同路径)
查看>>
CPC广告反作弊
查看>>
centos7下使用yum安装mysql
查看>>
针对不同包之间的action跳转,怎么配置?
查看>>
【BOI2007】【BZOJ1176】Mokia
查看>>
lua 函数回调技巧
查看>>
Fatal error: Maximum function nesting level of '100' reached, aborting!
查看>>
[转]easyui 全部图标
查看>>
ubuntu下如何查看用户登录及系统授权相关信息【转】
查看>>
[傅里叶变换及其应用学习笔记] 三十. 拉东变换
查看>>
HTML5 Canvas中9宫格的坑
查看>>