控制器 Controller
Mirror王宇阳
建议参考官方文档
控制器定义
控制器(controller),控制器文件存放在app/controller目录中,可以通过config/route.php配置controller_layer来改变默认的控制器目录。
创建一个控制器Test.php:app/controller/Test.php
namespace app\controller;
class Test
{
public function index()
{
return "控制器:Test.php";
}
}
双单词(首字母大写)组合的控制器:HelloWorld,可以通过两种访问构造进行同等效果的访问
http://thinkphp6.0/index.php/helloworld http://thinkphp6.0/index.php/hello_world
引入控制器后缀
避免引入同名模型类的冲突,在route.php配置controller_suffix为true,这样一来就需要把所有的控制器类名改为TestController,文件名也随同改动TestController.php
渲染输出
-
return直接输出
Thinkphp中采用了
return语法直接输出 -
JSON输出:引入
json函数,输出数组数据$data = array (\'a\'=>1 , \'b\'=>2 , \'c\'=>3); return json($data); -
渲染模板输出
return view();
使用thinkphp系统提供的
halt助手函数进行中断输出测试halt(\'中断测试\');
基本控制器
创建一个控制器文件后,通过继承"基础控制器类"app\BaseController(默认应用文件)获更多的方法
基本控制器提供了控制器的验证功能;注入了thinkphp\app、thinkphp\request对,可以直接通过使用基础控制器类的app、request属性调用thinkphp\app、thinkphp\request对象实例
use app\BaseController;
class Test = extentds BaseController
{
public function index()
{
//返回当前方法名
return $this->request->action();
//返回实际路径
return $this->app->getBasePath();
}
}
同时BaseController类中包含控制器验证功能,批量验证以及初始化initialize方法
空控制器
空控制器的定义是指当系统找不到指定的控制器名称的时候,系统会尝试定位应用中的空控制器Error类;该机制用来定制错误页面和URL的优化
class Error
{
public function index()
{
return "当前访问控制器不存在"
}
}
多级控制器
定义:在控制器controller目录中再建立目录并创建控制器;创建app\controller\group\Blog.php目录和文件(控制器)
class Blog
{
public function index()
{
return \'index\';
}
public function read()
{
return \'read\';
}
}
URL访问:http://thinkphp/group.blog/read
就是通过group.blog访问控制器(controller)目录中group目录中的blog文件;此方法也可以多级迭代,比如在group创建klii目录中的Klii.php,构造group.klii.Klii访问。