第十四章:第5节thinkPHP框架——控制器介绍

更新于:2018-01-17 19:25:17

这节对控制器做个简单介绍。大家可以看手册学习,手册上介绍的多,楠神只介绍几个常用的地方。


1、控制器类的命名:


控制器是写业务逻辑代码的地方,一个控制器就是一个类。注意控制器类的各种命名:


类命名:采用大驼峰法

类文件命名:类名.php

控制器命名空间:app\模块名\controller


2、控制器类的父类:


定义控制器类的时候,最好都要继承“Controller类”。


“Controller类”是TP框架已写好的控制器父类,继承它写功能时可以使用很多方法。


那“Controller类”在哪呢?


看我们的“Test控制器类”第3行代码,命名空间use的语法大家不会忘记吧!我们继承的“Controller类”从字面上可知道在“think目录”。


1.png


TP框架核心的代码都在这个目录中。


3、控制器类的方法


“Controller类”楠神觉得有必要看下它的源代码。


如果我们写的控制器类继承了“Controller类”,尽量不要与“Controller类”的方法重名(防止父类方法被重写)。


1.png


1)第一个需要注意的,初始化控制器时,防止父类的构造函数被重写。解决办法:


①在控制器类定义“_initialize方法”作为初始化方法。


1.png


②在控制器类的构造函数里写上这句代码 parent::__construct();


2)空操作。举个例子:


目前“Test控制器类”中没有“hello方法”,如果这样访问:


1.png

会报错!


控制器类中可以定义“_empty方法”,“_empty方法”是一个默认方法,如果访问控制器类的某一方法不存在,就会默认执行“_empty方法”。


1.png


注意“_empty方法”修饰符必须是“public”。


说明:TP框架系统代码比较复杂,想知道TP框架怎么实现的“_empty方法”可以作为默认方法,可去查看这里的代码:


1.png


3)常用的两个跳转方法:error方法和success方法。


用于业务逻辑中,通常在业务代码结束时,根据最后的结果做出两种跳转:


1.png


1.png


这两个方法的源代码在这里:


1.png


有关控制器的常用知识点楠神就介绍这几个,这是我常用的几个,更多的需要大家自己去看手册。比如控制器中“前置操作”功能,我不怎么用这个功能,有朋友要觉着这功能不错,可以学习下。还有资源控制器。


本节学习代码》》》