多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 控制器定义 一个典型的控制器类定义如下: ~~~ <?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" ] ~~~