thinkphp 分析 1 访问路径

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(调用);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值