这节对控制器做个简单介绍。大家可以看手册学习,手册上介绍的多,楠神只介绍几个常用的地方。
1、控制器类的命名:
控制器是写业务逻辑代码的地方,一个控制器就是一个类。注意控制器类的各种命名:
类命名:采用大驼峰法
类文件命名:类名.php
控制器命名空间:app\模块名\controller
2、控制器类的父类:
定义控制器类的时候,最好都要继承“Controller类”。
“Controller类”是TP框架已写好的控制器父类,继承它写功能时可以使用很多方法。
那“Controller类”在哪呢?
看我们的“Test控制器类”第3行代码,命名空间use的语法大家不会忘记吧!我们继承的“Controller类”从字面上可知道在“think目录”。
TP框架核心的代码都在这个目录中。
3、控制器类的方法
“Controller类”楠神觉得有必要看下它的源代码。
如果我们写的控制器类继承了“Controller类”,尽量不要与“Controller类”的方法重名(防止父类方法被重写)。
1)第一个需要注意的,初始化控制器时,防止父类的构造函数被重写。解决办法:
①在控制器类定义“_initialize方法”作为初始化方法。
②在控制器类的构造函数里写上这句代码 parent::__construct();
2)空操作。举个例子:
目前“Test控制器类”中没有“hello方法”,如果这样访问:
会报错!
控制器类中可以定义“_empty方法”,“_empty方法”是一个默认方法,如果访问控制器类的某一方法不存在,就会默认执行“_empty方法”。
注意“_empty方法”修饰符必须是“public”。
说明:TP框架系统代码比较复杂,想知道TP框架怎么实现的“_empty方法”可以作为默认方法,可去查看这里的代码:
3)常用的两个跳转方法:error方法和success方法。
用于业务逻辑中,通常在业务代码结束时,根据最后的结果做出两种跳转:
这两个方法的源代码在这里:
有关控制器的常用知识点楠神就介绍这几个,这是我常用的几个,更多的需要大家自己去看手册。比如控制器中“前置操作”功能,我不怎么用这个功能,有朋友要觉着这功能不错,可以学习下。还有资源控制器。