tp5架构详解和跨控制器调用
1、1、tp架构的概述
thinkphp使用了mvc设计模式

2、2、url解析
http://www.tp5.net/ index.php/ index/ index/ index
域名 入口文件 前台 前台控制器 方法

3、3、入口文件
D:\phpStudy\WWW\tp5\public\index.php
作用:负责整个http的请求

4、4、跨控制器调用
调用当前模块
$modle = controller("控制器名");
$modle->index();(调用的方法)
调用其他模块
$modle = controller("模块/控制器名");
$modle->index();(调用的方法)

5、5、调用方法
调用当前控制器的方法
#面向对象技术
$this->方法名
self::方法名
类名::方法名
#系统方法
action(方法名);
action(控制器名/方法)
action(模块名/控制器名/方法)

6、6、tp执行流程
入口文件(public\index.php)
作用: 定义目录常量,加载框架引导目录
加载框架的引导目录(thinkphp\start.php)
作用:引导基础文件、、
对应用进行运转
引导基础文件(thinkphp\sbase.php)
作用:加载系统常量,
引入loader类(tp5\thinkphp\library\think\loader.php),
引入环境变量,
注册自动加载机制,
注册异常处理机制(error.php),
加载惯例配置(convention.php)
运行应用(tp5\thinkphp\library\think\App.php 下的run方法)
第一步:加载当前控制器中 initcommon()方法
加载命名空间
第二步:加载当前控制器中的 init()方法
加载各种配置文件,加载公共文件,加载语言包
第三步:设置时区
第四步:加载当前控制器routeCheck()方法 路由检测
第五步:调用控制器中的exec()方法
根据用户请求进行分发处理,
第六步:根据不同的请求类型加载对应文件
