## 控制器定义
一个典型的控制器类定义如下:
~~~
<?php
namespace app\Controller;
class Index extends GoController
{
public function index()
{
return 'hello';
}
~~~
控制器类文件的实际位置是
~~~
src\controller\Index.php
~~~
命名空间默认以`app`为根命名空间。控制器的根命名空间可以设置,例如我们在composer.json中修改
~~~
{
"require": {
"esd/esd-server": "~0.1",
},
"autoload": {
"psr-4": {
"app\\": "src/"
}
}
}
~~~
>[danger] 警告修改该设置需要同时修改 scan.include_paths,aop.include_paths,reload.monitor_dir 配置,一般情况下请勿修改默认设置。
# 渲染输出
默认情况下,控制器的输出全部采用`return`的方式,无需进行任何的手动输出,系统会自动完成渲染内容的输出。
下面都是有效的输出方式:
~~~
namespace app\controller;
class Index extends GoController
{
public function hello()
{
return 'hello,world!';
}
public function json()
{
return json_encode($data);
}
}
~~~
>[danger] 因为没有设置路由,以上代码还不能够直接访问。直接echo 或者 print的数据,将会直接显示在控制台内,并不会影响浏览器的输出。
# 输出转换
默认情况下,控制器的返回输出不会做任何的数据处理,但如果return 的是数组或者对象,会进行自动的数据转换处理。
如果控制器定义为:
~~~
/**
* @GetMapping()
* @return array
*/
public function autoReturn(){
return ['a','b','c'];
}
~~~
>[danger] 会输出以下内容,注意如果直接return,浏览器不会附带json 的 Content-type','application/json' 头信息。
~~~
[
"a",
"b",
"c"
]
~~~
- 前言
- 捐赠ESD项目
- 使用篇-通用
- 环境
- 安装
- 规范
- 压力测试
- 配置
- 如何设置YML配置
- server配置
- 端口配置
- 项目结构
- 事件派发
- 日志
- 注解
- DI容器
- 自定义进程
- 并发及协程池
- Console插件
- Scheduled插件
- Redis插件
- AOP插件
- Saber插件
- Mysql插件
- mysql事务
- Actuator插件
- Whoops插件
- Cache插件
- PHPUnit插件
- Security插件
- Session插件
- EasyRoute插件
- http路由
- ProcessRpc插件
- AutoReload插件
- AnnotationsScan插件
- Tracing-plugin插件
- MQTT插件
- Pack插件
- AMQP插件
- Validate插件
- Uid插件
- Topic插件
- Blade插件
- CsvReader插件
- hashed-wheel-timer-plugin插件
- 使用篇-HTTP
- 路由
- 静态文件
- 路由定义
- 修饰方法
- 路由分组
- 资源路由
- 端口作用域
- 异常处理
- 跨域请求
- 路由缓存
- 控制器
- 控制器初始化
- 前置操作
- 跳转和重定向
- 异常处理
- 请求
- 请求对象
- 请求信息
- request消息
- response消息
- stream消息
- url接口
- 验证器
- 内置验证器
- 内置过滤器
- 使用篇-WS
- 如何使用
- 路由
- 使用篇-TCP
- 插件篇-PluginSystem
- 微服务篇-ESDCloud
- CircuitBreaker插件
- SaberCloud插件
- 分布式链路追踪系统
- Consul插件