## 控制器 控制器是应用程序中处理用户交互的部分,通常控制器负责读取请求数据,与模型交换数据,渲染视图并发送数据。 >[info] 控制器并不需要强制继承某个基类 控制器是通过路由规则中第一个 callable 类型参数定义的: ~~~php // 路由规则 'rules' => [ // 普通路由 '/' => [[\App\Http\Controllers\IndexController::class, 'index'], 'middleware' => [\App\Http\Middleware\ActionMiddleware::class]], ], ~~~ ## 一个简单的控制器 框架 `Web` 模块的首页默认控制器代码: ~~~ <?php namespace App\Web\Controllers; use App\Common\Helpers\ResponseHelper; use Mix\Http\Message\ServerRequest; use Mix\Http\Message\Response; /** * Class IndexController * @package App\Web\Controllers * @author liu,jian <coder.keda@gmail.com> */ class IndexController { /** * Index * @param ServerRequest $request * @param Response $response * @return Response */ public function index(ServerRequest $request, Response $response) { $content = 'Hello, World!'; return ResponseHelper::html($response, $content); } } ~~~ 其中控制器 callable `[\App\Web\Controllers\IndexController::class, 'index']` 的两个参数 `$request`、`$response` 是通过如下方式传递过来的: - [Router.php#L210](https://github.com/mix-php/route/blob/master/src/Router.php#L210)