简介
ThinkPHP 5.0 的控制器定义比较灵活,可以无需继承任何的基础类,也可以继承官方封装的 \think\Controller 类或者其他的控制器类。
一个典型的控制器类定义如下:
<?php
namespace app\index\controller;
class Blog
{
public function index()
{
return view('index');
}
}
控制器类文件的实际位置是 application\index\controller\Blog.php。
控制器类可以无需继承任何类,命名空间默认以 app 为根命名空间。
默认情况下,控制器的输出全部采用 return 的方式,无需进行任何的手动输出,系统会自动完成渲染内容的输出。
ThinkPHP 5.0 中,控制器主要分为以下几种:
- 访问控制器(主控制器)
- 空控制器
- 多级控制器
- 分层控制器
- Rest 控制器
- 资源控制器
访问控制器
可通过 URL 直接访问的控制器就是访问控制器(Controller)或者主控制器,访问控制器是由 \think\App 类负责调用和实例化的,无需手动实例化。
URL 解析和路由后,会把当前的 URL 地址解析到 [ 模块/控制器/操作 ],其实也就是执行某个控制器类的某个操作方法。
上面的一段代码,就是一个访问控制器的例子。可访问的 URL 为:http://serverName/index/blog/index
空控制器
空控制器是指当系统找不到指定的控制器名称的时候,系统会尝试定位到空控制器(Error),利用这个机制可以用来定制错误页面和URL优化。
默认的空控制器的名称为 Error。
我们给项目定义一个Error控制器类。
<?php
namespace app\index\controller;
use think\Request;
class Error
{
public function index(Request $request)
{
$controllerName = $request->controll