thinkphp5.0学习(二):tp5.0架构和运转流程
来源:互联网 发布:守望先锋生涯数据出错 编辑:程序博客网 时间:2024/06/04 18:49
注意:下文的application文件夹简写为app文件夹
一、TP架构的概述
thinkphp 使用MVC模式,它强制性的使应用程序的输入、处理和输出分开,使用MVC程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),他们各自处理自己的任务。
二、url解析
http://www.tp.com/index.php/Index/index/index
协议/域名/入口文件/模块/控制器/方法
1.应用
一个应用代表一个网站
2.入口文件
文件地址:应用\public\index.php
作用:负责处理请求
3.模块(以前台为例)
模块地址:app\index
作用:网站所有的前台相关都与其相关
新建模块:在app目录下创建admin文件夹,并在文件夹中创建model、view、controller文件夹,在controller文件夹中创建控制器,方法见4.控制器
4.控制器
控制器目录:app\index\controller
作用:书写业务逻辑
新建控制器(以前台为例)
- 在前台控制器目录(app\index\controller)下新建User.php
- 在控制器中书写代码
<?php// 声明命名空间(我理解为声明该文件所在的位置)namespace app\index\controller;// 声明控制器class User{ function index() { echo 'user控制器下的index方法'; }}?>
3.地址栏访问
http://www.tp.com/index.php/index/User/index
4.注意:
- 1.控制器的文件名必需首字母大写
- 2.控制器中必需声明命名空间
- 3.控制器中的类名必需和文件名一致
5、操作(方法)
1.操作地址
操作一般都在控制器的文件中
2.新建一个操作(以前台index控制器为例)
1.打开前台index控制器(app\index\controller\Index.php)
2.在控制器新建test方法
public function test(){ return "我是用户自己创建的方法";}
3.地址栏访问
http://www.tp.com/index.php/index/Index/test
6.模型(数据模型)
1.数据模型地址(app\index\model)
2.作用:负责数据库相关的处理
7.视图(页面)
1.页面地址(app\index\view)
2.作用:其实就是网站页面
三、命名空间
与目录相关(以前台index控制器为例)
项目\app\index\controller的命名空间是
namespace app\index\controller;
四、跨控制器调用
1.调用当前模块的其他控制器
// 调用当前模块的其他控制器 function diaoyong(){ // 方法一:使用命名空间 $model=new \app\index\controller\User; $model->index(); // 方法二:使用use,在开头处加上use \app\index\controller\User; $model=new User; $model->index(); // 方法三:使用系统方法 $model=controller('User'); $model->index(); }
2.调用其他模块的控制器中的方法
// 调用其他模块的控制器中的方法 function diaoyongs(){ // 方法一:使用命名空间 $model=new \app\admin\controller\User; $model->index(); echo '<hr>'; // 方法二:使用use,在开头处加上use \app\admin\controller\User as AdminUser; $model=new AdminUser; $model->index(); echo '<hr>'; // 方法三:使用系统方法 $model=controller('admin/User'); $model->index(); }
五、调用方法
1. 调用当前控制器的方法
// 调用当前控制器的方法 function fangfa(){ // 方法一(this指向当前控制器) $this->diaoyongs(); // 方法二(self指向当前控制器) self::diaoyongs(); // 方法三(直接使用当前控制器) Index::diaoyongs(); // 方法四(action) action('diaoyongs'); }
2. 调用其他控制器的方法
// 调用其他控制器中的方法 public function fangfas(){ // 方法一 $model=new \app\index\controller\User; $model->index(); echo '<hr>'; // 方法二 action('User/index'); }
3. 调用模块下的方法
// 调用其他模块中的方法 public function mokuai(){ // 方法一 $model=new \app\admin\controller\User; $model->index(); echo '<hr>'; // 方法二 action('admin/User/index'); }
六、主要分析TP执行流程
1. 入口文件(项目\public\index.php)
作用:
- 定义目录常量
- 加载框架的引导目录
2. 加载框架的引导文件(项目\thinkphp\start.php)
作用:
1. 引导基础文件
2. 对应用进行运转
3. 加载框架的基础引导文件(项目\thinkphp\base.php)
作用:
1. 加载系统常量
2. 载入Loader类(项目\thinphp\library\think\loader.php)
3. 引入环境变量
4. 注册自动加载机制
5. 注册异常处理机制(项目\thinkphp\library\think\Error.php)
6. 加载惯例配置(项目\thinkphp\convention.php)
4. 运行应用(项目\thinkphp\library\think\App.php)下的run方法
- 第一步:加载当前控制器中的initCommon()
- 第二步:加载当前控制器的init()方法 ,加载各种配置文件,加载公共文件,加载语言包
- 第三步:设置时区
- 第四步:加载当前控制器 routeCheck()方法:路由检测
- 第五步:调用控制器中的exec()方法:根据用户的请求进行分发处理
- 第六步:根据不同的请求类型加载对应的文件 module方法,加载对应的控制器和对应的方法
5. 响应输出:用户看到的所有界面就加载出来了
- thinkphp5.0学习(二):tp5.0架构和运转流程
- thinkphp5.0学习(九):TP5.0视图和模板
- thinkphp5.0学习(五): TP5.0控制器
- thinkphp5.0学习(十):TP5.0验证器
- thinkphp5.0学习(十一):TP5.0杂项
- 《TP5.0学习笔记---模型篇(二)》
- thinkphp5.0流程
- Windows下thinkphp5.0(tp5)的memcache数据缓存技术的实现过程
- ThinkPHP5.0学习(一)
- ThinkPHP5.0执行流程分析
- 《TP5.0学习笔记---对Mysql数据库的操作(二)》
- ThinkPHP5.0学习笔记
- ThinkPHP5.0版本学习
- thinkphp5.0学习(一):准备
- thinkphp5.0学习(三):配置相关
- thinkphp5.0学习(七):数据库操作
- thinkphp5.0学习(八):模型
- 《TP5.0学习笔记---URL和路由篇》
- maven下搭建springMVC+mybatis+mysql+zookeeper+dubbo
- 现场保护与恢复
- Android Glide设置默认图片、异常图片为圆形图片
- scikit-learn机器学习库
- Invalid nested tag br found, expected closing tag li 错误解决
- thinkphp5.0学习(二):tp5.0架构和运转流程
- 欢迎使用CSDN-markdown编辑器
- 12.leetCode690. Employee Importance
- Discuz!X json输出解析后模板
- android精确绘制文字位置的方法
- C#中属性和字段的区别
- Linux创建用户并加入sudoers文件
- 实现HttpClient重试
- 原生js实现的鼠标滑上去之后按照屏幕高度放大缩略图