## 控制器定義
一個典型的控制器類定義如下:
~~~
<?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插件