# 控制器定义
此页面参照了EasySwoole Distributed的文档,原文档地址
[https://www.kancloud.cn/tmtbe/goswoole/1085973]: https://www.kancloud.cn/tmtbe/goswoole/1085973
一个典型的控制器类定义如下:
```php
<?php
namespace app\Controller;
class IndexController extends GoController
{
public function actionIndex()
{
return 'hello';
}
```
控制器类文件的实际位置是
```
src\controller\Index.php
```
命名空间默认以`app`为根命名空间。控制器的根命名空间可以设置,例如我们在composer.json中修改
```json
{
"require": {
"esd/esd-server": "~0.1",
},
"autoload": {
"psr-4": {
"app\\": "src/"
}
}
}
```
> 警告修改该设置需要同时修改 scan.include_paths,aop.include_paths,reload.monitor_dir 配置,一般情况下请勿修改默认设置。
## 渲染输出
默认情况下,控制器的输出全部采用`return`的方式,无需进行任何的手动输出,系统会自动完成渲染内容的输出。
下面都是有效的输出方式:
```php
namespace app\controller;
class IndexController extends GoController
{
public function actionHello()
{
return 'hello,world!';
}
public function actionJson()
{
return json_encode($data);
}
}
```
> 因为没有设置路由,以上代码还不能够直接访问。直接echo 或者 print的数据,将会直接显示在控制台内,并不会影响浏览器的输出。
## 输出转换
默认情况下,控制器的返回输出不会做任何的数据处理,但如果return 的是数组或者对象,会进行自动的数据转换处理。
如果控制器定义为:
```json
/**
* @GetMapping()
* @return array
*/
public function autoReturn(){
return ['a','b','c'];
}
```
> 会输出以下内容,注意如果直接return,浏览器不会附带json 的 Content-type','application/json' 头信息。
```json
[
"a",
"b",
"c"
]
```
- 1 介绍
- 2 安装
- 2.1 环境
- 2.2 安装
- 3 配置
- 3.1 Server配置
- 3.2 端口配置
- 3.3 项目结构
- 3.4 内核优化
- 4 服务
- 4.1 HTTP服务
- 4.1.1 路由
- 4.1.1.1 静态路由
- 4.1.1.2 路由定义
- 4.1.1.3 路由方法
- 4.1.1.4 路由分组
- 4.1.1.5 资源路由
- 4.1.1.6 端口作用域
- 4.1.1.7 异常处理
- 4.1.1.8 跨域请求
- 4.1.1.9 路由缓存
- 4.1.2 控制器
- 4.1.2.1 控制器初始化
- 4.1.2.2 前置后置操作
- 4.1.2.3 跳转与重定向
- 4.1.2.4 异常处理
- 4.1.3 请求
- 4.1.3.1 请求对象
- 4.1.3.2 请求信息
- 4.1.3.3 REQUEST消息
- 4.1.3.4 RESPONSE消息
- 4.1.3.5 STREAM消息
- 4.1.3.6 URI信息
- 4.1.3.7 处理上传文件
- 4.1.3.8 验证器
- 4.2 Websocket服务
- 4.2.1 Websocket配置
- 4.2.2 Websocket路由
- 4.3 TCP服务
- 4.3.1 TCP配置
- 4.3.2 TCP路由
- 4.3.3 协程处理案例
- 5 插件
- 5.15 Yii-PDO插件
- 5.15.1 PDO 连接MySQL Mariadb
- 5.15.2 PDO连接PostgreSQL
- 5.15.3 PDO连接GreenPlum
- 5.15.4 PDO连接Oracle
- 5.15.5 PDO连接Cubrid
- 5.15.6 PDO连接SQL Server
- 6 概念
- 7. Yii- I18N国际化
- 8. 模型 Yii-Model
- 8.1 快速创建模型
- 8.2 快速创建多个模型
- 8.3 核心验证器 Core Validators
- 9. 配合数据库工作
- 9.1.数据库访问对象 Database Access Objects
- 9.2 查询构造器 Query Builder
- 9.3 活动记录 Active Record