5个属性
1.试图类实例对象:protected $view;
2.请求类实例对象:protected $request;
3.验证失败是否抛出异常:protected $failException=false;
4.是否批量验证:protected $batchValidate=false;
5.前置方法列表:protected $beforeActionList=[];
8个方法介绍
1.构造方法:public function __construct(Request $request = null)
2.初始化方法:protected function _initialize(){}//默认为空
3.加载模版:protected function fetch($template = ”, $vars = [], $replace = [], $config = [])
4.渲染内容:protected function display($content = ”, $vars = [], $replace = [], $config = [])
5.模版变量赋值:protected function assign($name, $value = ”)
6.初始化模版引擎:protected function engine($engine)
7.验证失败抛出异常:protected function validateFailException($fail = true)
8.验证数据:protected function validate($data, $validate, $message = [], $batch = false, $callback = null)
总结:任何学习方法,都替代不了阅读源代码。阅读源代码,不仅可以了解作者的编程思路,还可以学到很多编程技巧,是一种有效的学习方式。
什么是控制器?什么是可访问控制器?
application下的index模块下controller中的文件。
什么是操作?什么是可访问操作?
控制器中的方法。
public function 方法是可访问操作。
什么是命名空间?它与控制器或方法后缀的关系?
3个预置跟命名空间:application,think,traits。
命名空间:namespace app\index\controller;//类名=根空间+子空间(可选)+类名
5.0版本因为有了命名空间,所以不用加后缀,如果加上控制器加上后缀:可以防止类名和关键字冲突。
控制器的命名规范是什么?如何正确访问控制器?
UserLogin.php类访问:协议+模块+user_login+方法,输入的url中大写字母全部会自动转化为小写。
为什么要自定义访问控制器层?
为了项目规范。
为什么要创建多级控制器?
分级管理。
为什么要创建空操作和控制器?
对不存在的访问的url进行拦截。
在控制器中使用trait有什么好处?
可以使用基于基类的方法。
什么是单一模块?什么时候需要使用它?
// 是否支持多模块‘app_multi_module’ => false,
使用单一模块,多级控制器完成网站前后端规划。
总结:控制器的分级管理使项目逻辑更加清晰,空操作与空操作器使控制器具备了容错机制,trait的引入,使控制器可从多个trait类中继承方法集,横向扩展了控制器的功能。
公共操作有什么用?如何创建公共操作?
构造方法创建公共操作,解决了操作共享数据的问题。
公共控制器类有什么用?如何创建公共控制器?
控制器的公共操作来解决了类中数据共享以及属性初始化的问题。公共控制器,从控制器层面上,解决了控制器类之间的属性和方法的共享问题。这是二个层面上的抽象,也是非常实用的技术。
什么是前置操作?
第一步:创建前置操作方法;
第二步:配置前置操作列表。
为什么必须继承基类Controller,才能创建前置操作?
用到基类中的前置操作方法。
前置操作有什么用?如何正确的使用它?
在之前的版本中,除了前置操作,还有后置操作,不过在ThinkPHP5中,已经取消了同鸡肋的后置操作。关于前置操作,可以想象成全部或部分方法的构造函数。其目的,是为了项目规范,易维护,好发展。
页面跳转与重定向
1.页面跳转的目标有哪些?
调用方法:$this->success(‘提示’,’地址’) $this->error(‘提示’,’地址’)
1)当前控制器 2)跨控制器 3)跨模块 4)外部地址
2.如何设置URL访问重定向?
调用方法:$this->redirect(‘路由地址’,[变量列表],”,’域名开关’)
1)站内地址 2)外部地址
请求对象与参数绑定
1.请求变量与请求对象的关系?
2.请求信息包括哪些?
3.如果通过参数绑定来简化请求的URL地址?
总结:用户对所有网络资源的访问,都要通过请求对象,以URL为载体进行访问。用户需求的个性化是通过请求变量来体现。
属性注入与方法注入
1.属性注入:\think\Request::instance()->属性
2.方法注入:\think\Request::hook(‘方法’,’对应函数’)
作用:给当前请求对象绑定属性和方法,请求对象在应用的整个生命周期内都有效的,不仅可以被当前所有控制器方法所共享,还可以跨控制器和模块进行调用。
总结:请求对象的属性与方法注入,不仅可以扩展请求对象的功能,实现在整个应用周期的信息共享,而且它还为自定义请求的行为制定了标准。
请求对象依赖注入
1.依赖注入:改变了使用对象前,必须线创建对象的传统方式,而是从外部注入所依赖的对象;
2.Thinkphp5中依赖注入主要是指把对象注入到可访问控制器;
3.注入方式:控制器的构造方法和操作方法;
4.实现方式:对参数尽享兑现该类型约束则会自动触发依赖注入,自动实例话该对象。
总结:访问控制器的依赖注入,极大了方便了在操作中使用请求对象,它不需要依赖与控制器基类,也不需要倒入请求累命名空间,是一种高效的获取请求对象方式。
ThinkPHP控制器(原文地址)
结束。
你们的支持也是我前进的动力,非常感谢支持!