微擎模块管理的执行路由

执行 http://xxx.com/web/index.php?c=site&a=entry&eid=6 系统是如何找到具体模块中的对应方法的?下面简单梳理一下:

web目录下的index.php 包含了require '../framework/bootstrap.inc.php';

在bootstrap.inc.php的最后读取controller,action,do

$controller = $_GPC['c'];
$action = $_GPC['a'];
$do = $_GPC['do'];

index.php继续往下走,require _forward($controller, $action);
function _forward($c, $a) {
$file = IA_ROOT . '/web/source/' . $c . '/' . $a . '.ctrl.php';
return $file;
}

包含了 /web/source/site/entry.ctrl.php

在entry.ctrl.php里:
从ims_modules_bindings表里读取eid=6的记录到$entry,然后根据记录加载模块,

$site = WeUtility::createModuleSite($entry['module']);
define('IN_MODULE', $entry['module']);
...
$method = 'doWeb' . ucfirst($entry['do']);
exit($site->$method());

例如$entry['do']是stores,那实际调用的方法是模块目录下site.php里的doWebStores

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 自己做dede的开发时间也比较长了,基本上常用的函数都知道在哪个文件里面,但是时间一长,也有点模糊了,俗话说:好记...
    大刘的英语世界阅读 1,942评论 1 9
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,086评论 19 139
  • 每个孩子的降临都是上帝对父母的恩赐,那如果这个孩子有一堆爸妈呢? 晒娃时间到!!! 一群热血的咖啡疯子们经过了几个...
    杨四壶阅读 271评论 0 0
  • 在ubuntu上安装了ns3后开始使用样例学习使用ns3,ns3使用c++编程还是让我学起来比较爽的
    53324d792ce6阅读 776评论 0 1
  • 虬髯客 那晨起的鸟儿 天一刚亮,就大声说出爱 清亮,喜悦,单纯 像一天最初的仪式 他们从梦中醒来 一定是饿的 啄破...
    四川虬髯客阅读 293评论 2 0

友情链接更多精彩内容