apache 服务器接收到请求后。将请求交给php程序处理,比如通过CLI命令行等形式,处理完以后将html返回给apache.apache把结果返回给用户
单入口的是从index.php开始的。
http://localhost/index.php/Admin/public/adminIndex
比如上面的连接 入口就是index.php 后面的/Admin/public/adminindex
表现为URI是 /index.php/Admin/public/adminIndex
PATH_INFO 是 /Admin/public/adminIndex
在dispatch.php中处理dispatch函数内 解析
通过 /划分 为 Admin public adminIndex
if (C('APP_GROUP_LIST') && !isset($_GET[C('VAR_GROUP')])){
$var[C('VAR_GROUP')] = in_array(strtolower($paths[0]),explode(',',strtolower(C('APP_GROUP_LIST'))))? array_shift($paths) : '';
if(C('APP_GROUP_DENY') && in_array(strtolower($var[C('VAR_GROUP')]),explode(',',strtolower(C('APP_GROUP_DENY'))))) {
// 禁止直接访问分组
exit;
}
}
首先解析是分组VAR_GROUP是 Admin 在app/conf/config.php中定义的'APP_GROUP_LIST' => 'Home,Admin,Member,Wap',
接下来就是解析VAR_MODULE就是Public
接下来就是VAR_ACTION 就是adminIndex
后续如果还有。那就是附带的参数。
离开dispatch以后
进入了exec()
在exec 会进入
//创建Action控制器实例。创建了action
A($group.MODULE_NAME);
这里有个关于构建Action的流程解释。
group name Admin/
传入的是Admin/public
modulename Admin/Public
创建控制Action的流程
name==> Admin/Public
name fix ==> @/Action/Admin/Public
import 导入使用了PublicAction.class.php
import name_action==> @/Action/Admin/PublicAction
class==> PublicAction
最后引入了 @/Action/Admin/PublicAction.class.php
开始new这个对象的时候 进入了PublicAction构造函数继承了 AdminBaseAction
进入了 AdminBaseAction的 _initialize函数 。这里面检查了是否登录
if (!$this->isLogin() && !in_array($mName, $NoCheckAction)) {
$this->redirect('Public/login');
}
由于我们没有登录。所以跳转到了重定向 。重定向是返回数据以后直接退出了。这个脚本就完成了。
如果可以的话就构建成功了Action类。也就是 第二部分里面的 A(调用);