1.自己的总结
a.跨控制器的调用
1.$model=new \app\admin\controller\Index;echo $model->index();
2.$model=controller(‘admin/Index’); echo $model->index();
b.方法的调用(用的系统方法 还有其他)
echo action (‘Login/login’); 调用index下同一个控制器中的方法
echo action (‘Text/text’); 调用index下不同控制器中的方法
echo action (‘admin/User/user’); 调用admin下控制器中的方法
2.出错的地方
1.无论是调用控制器或者方法,都要写在想调用那个方法的里面,写在外面要报错.
2.$model=controller(‘admin/Index’); echo
m
o
d
e
l
−
>
i
n
d
e
x
(
)
;
输
出
的
是
model->index();输出的是
model−>index();输出的是model->index();不是$this->index();还有就是index是控制器名称。自己实践中控制器变了而没有改名字导致运行出错.
3、URL解析
http:// www.tp.com /index.php /Index /Index /index 协议 域名 入口文件(可不要) 模块 控制器 方法
注意如果自己没有配置域名 访问url如下
127.0.0.1/tp5/public/ index.php /index/Index/index
4.命名空间
与目录有关(以前台index控制器命名空间为例) C:\AppServ\www\tp5\application\index\controller
namespace app\index\controller;
5、主要分析TP执行流程(了解知道流程就是,刚开始不怎么懂的)
1、入口文件(C:\AppServ\www\tp5\public\index.php)
作业 (1)定义目录常量
(2)加载框架引导目录
2、加载框架的引导文件(C:\AppServ\www\tp5\thinkphp\start.php)
作用:(1) 引导基础文件
(2) 对应用进行运转
3、加载框架的基础引导文件(C:\AppServ\www\tp5\thinkphp\base.php);
作用: (1) 加载系统常量
(2) 引入loader类 ( C:\AppServ\www\tp\thinkphp\library\think\loader.php)
(3) 引入环境变量
(4) 注册自动记载机制
(5) 注册异常处理机制(C:\AppServ\www\tp5\thinkphp\library\think\Error.php)
(6) 记载惯例配置(C:\AppServ\www\tp5\thinkphp\convention.php)
4、运行应用(C:\AppServ\www\tp5\thinkphp\library\think\App.php) 下的run方法; 1、第一步: 加载当前控制器中 initCommon() 方法
2、第二步: 加载当前控制器中 init() 方法 1、加载各种配置文件 2、加载公共文件 3、加载语言包
3、第三步: 设置时区
4、第四步: 加载当前控制器 routeCheck() 方法 路由检测
5、第五步: 调用控制器中exec方法 根据用户请求进行分发处理
6、第六步: 根据不同请求类型记载对应文件 module方法
加载到对应的控制器和对应方法
5、响应输出 用户看到的所有界面就加载出来了