企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 控制器定义 此页面参照了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" ] ```