TP控制器从入门到精通
第一讲:认识控制器
本讲主要是了解ThinkPHP5.0
的控制器的基本概念和使用方法,主要包括:
- 什么是控制器
- 命名空间
- 控制器继承
- 操作方法
- 驼峰命名
- 控制器后缀
- 方法后缀
- 总结
第二讲:控制器高级
本讲的内容是介绍一些控制器高级特性和用法,主要包括:
- 访问控制器层名称
- 多级控制器
- 空操作
- 空控制器
- 资源控制器
- 使用
trait
- 单一模块
- 总结
第三讲:使用控制器基类
系统内置了一个控制器基类
think\Controller
,本讲内容就是来讲解下这个控制器基类的功能和用法。 - 控制器初始化
- 前置操作
- 页面跳转
- 重定向
- 渲染模板
- 请求数据验证
- 总结
-
要使用控制器基类的功能,有两种方式:继承
think\Controller
基类和使用Trait
引入traits\controller\Jump
,继承可以使用基类的完整功能,Trait
引入的话只有部分功能,后面我们会提到。第四讲:请求对象
本讲的内容为请求对象(
Request
)的概念和使用方法,主要包含: - 请求变量
- 请求信息
- 请求缓存
- 参数绑定
- 属性注入
- 方法注入
- 总结
第五讲:依赖注入
在软件工程领域,依赖注入(Dependency Injection,简称
DI
)是用于实现控制反转(Inversion of Control,简称IoC
)的最常见的方式之一,而控制反转的目的是为了更好的解耦。依赖注入其实并不神奇,当你理解了ThinkPHP5的依赖注入的实现原理后,会发现并没有想象中那么晦涩难懂。
ThinkPHP5的依赖注入主要指针对访问控制器的依赖注入,实现方式主要包括架构函数注入和操作方法注入,表现方式则是在控制器架构函数和操作方法中一旦对参数进行对象类型约束则会自动触发依赖注入(再通俗点说就是自动实例化该对象),由于访问控制器的参数都来自于URL请求,普通变量就是通过参数绑定自动获取,对象变量则是通过依赖注入生成,下面分别举例说明。
- 架构函数注入
- 自动实例化规则
- 操作方法注入
- 总结
第六讲:错误和异常处理
本讲的内容主要来讲解下错误和异常的概念及使用,以及如何抛出、捕获异常,包括定制HTTP异常的错误模板等,主要包括:
- 错误和异常
- 处理流程
- 手动抛出和捕获异常
- HTTP异常
- 内置异常类
- 总结
第七讲:表单请求和验证
本讲的内容是讲解如何进行提交类型判断和表单验证,主要包含:
- 请求类型
- 伪装请求
- 模拟
AJAX
请求 - 表单验证
- 验证错误信息
- 使用验证器
- 抛出验证异常
- 批量验证
- 内置验证规则
- 自定义验证规则
- 总结
第八讲:响应输出
本讲的内容主要是如何根据不同的请求进行响应输出,主要包括:
- 自动输出
- 手动输出
- 设置数据
- 设置状态码
- 设置头信息
- 设置额外参数
- 重定向
- 总结
第九讲:模板渲染
模板渲染主要用于WEB应用,如果是接口应用一般不需要模板。本讲内容主要是在控制器中进行模板变量赋值及渲染输出(不涉及模板标签使用)的用法及注意事项,主要包括:
- 视图实例化
- 模板文件定位
- 模板变量赋值
- 全局模板变量
- 输出替换
- 模板渲染
- 调用模板引擎方法
- 使用其它模板引擎
- 总结
第十讲:行为和钩子
本讲的内容主要是帮助大家理解行为和钩子的概念和使用方法,主要包括:
- 钩子和行为
- 行为定义
- 绑定行为
- 自定义钩子
- 总结
附录A:常见问题
- 控制器驼峰法命名后怎么在URL正确访问?
- 开启控制器类后缀功能的话是否需要在URL里面也加上后缀?
- 第三方类库怎么在控制器中调用?
- 继承
think\Controller
和use traits\controller\Jump
的区别是什么? - Rest控制器应该如何使用?
- 为什么在控制器的初始化方法中不能跳转和重定向?
- 为什么使用
Request
的get
方法无法获取URL变量? - 操作方法的参数绑定的变量顺序会有影响么?
- 怎么忽略一些次要的错误不抛出异常?
- 可以在行为中给模板变量赋值么?
- 使用控制器的fetch和使用助手函数view渲染模板有什么区别?
- 可以在模板中对某些字符串进行自动替换么?
附录B:HTTP状态码
HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码。它由 RFC 2616 规范定义的,并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等规范扩展,包括:
- 消息(1字头)
- 成功(2字头)
- 重定向(3字头)
- 请求错误(4字头)
- 服务器错误(5、6字头)
附录C:常用方法清单
think\Controller
控制器基类think\Request
请求类think\Response
响应类think\response\View
响应类think\response\Redirect
响应类- 常用助手函数