ThinkPHP3.2.3控制器通常需要继承系统的Controller类或者其子类,例如,下面定义了一个 \Home\Controller\IndexController
控制器类:
<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function hello(){ echo 'hello'; } public function test(){ echo 'test'; } }
控制器的名称采用驼峰法命名(首字母大写),控制器文件位于 Home/Controller/IndexController.class.php
。
IndexController控制器类的hello和test方法就是操作方法,访问下面的URL地址:
http://serverName/Home/Index/hello http://serverName/Home/Index/test
会分别输出:
hello// 和test
操作方法的定义必须是公共方法,否则会报操作错误,所以,下面的操作定义只能访问hello操作,而不能访问test操作。
<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function hello(){ echo 'hello'; } protected function test(){ echo 'test'; } }
注意:定义控制器方法的时候,尽量避免和系统的保留方法相冲突(除非你非常明确自己在做什么
),这些保留方法名包括但不限于:
display get show fetch theme assign error success
因为操作方法就是控制器的一个方法,所以遇到有和系统的关键字冲突的方法可能就不能定义了,这个时候我们可以设置操作方法的后缀来解决,例如:
'ACTION_SUFFIX' => 'Action', // 操作方法后缀
设置操作方法的后缀为Action,这样,控制器的操作方法定义调整为:
<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function listAction(){ echo 'list'; } public function helloAction(){ echo 'hello'; } public function testAction(){ echo 'test'; } }
操作方法的后缀设置只是影响控制器类的定义,对URL访问没有影响。