介绍
使用YII怎么实现分模块加载路由?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
项目结构如下
新增了一个<代码>模块。php代码>来管理模块的加载
调整之前<代码> web。php代码>的模块加载配置如下
& # 39;模块# 39;,=祝辞,( & # 39;才能设置# 39;,=祝辞,( ,,,& # 39;类# 39;,=祝辞,& # 39;appcomponents \ \安装\模块# 39;模块, ,,, & # 39;才能shareorder& # 39;,=祝辞,( ,,,& # 39;类# 39;,=祝辞,& # 39;appcomponents \ \ shareorder \模块# 39;模块, ,,, )
调整之后<代码> web.php 代码>模块配置如下
<代码> & # 39;模块# 39;=比;要求(__DIR__) # 39;公司/modules.php& # 39; 代码>
<代码>模块。php代码>里面配置如下
return ( & # 39;才能设置# 39;,=祝辞,( ,,,& # 39;类# 39;,=祝辞,& # 39;appcomponents \ \安装\模块# 39;模块, ,,, & # 39;才能shareorder& # 39;,=祝辞,( ,,,& # 39;类# 39;,=祝辞,& # 39;appcomponents \ \ shareorder \模块# 39;模块, ,,, ];
然后修改<代码>规则。php代码>
default 美元;=,( ]; $ modules =, require __DIR__ # 39;公司。/modules.php& # 39;; $ roles =, []; foreach (modules 美元;as $模块) { 时间=美元才能class new ReflectionClass($模块(& # 39;类# 39;]); 时间=美元才能filePath 类→美元getFileName (); 时间=美元才能filePath str_replace(& # 39;模块# 39;& # 39;规则# 39;,filePath美元); 如果才能(file_exists (filePath美元)) {才能 ,,,role 美元;=,require filePath美元; ,,,roles 美元;=,array_merge(角色、角色美元); ,,} } return array_merge(角色,默认美元);。
利用反射找到每个模块的真实路径,然后加载当前模块下的<代码>规则。php代码>文件
每个模块的目录结构
其中<代码> Modules.php> 代码是配置当前模块,加载命名空间等。<代码>规则。php代码>为当前模块的下的路由配置