(php) typecho-framework 中如何在 Action 中设置成返回 JSON 格式

class Home extends AbstractAction { public $text; public function execute { $this->text = "hello world"; return arraytemplate, home.php; }
}

这个是渲染模板,传入 text 参数的示例。但是如果不需要渲染模板,直接输出 json 格式的数据呢?

我尝试过读源码,发现

namespace TEMvcServerHttp; use TEMvcServerResponseInterface;
use TEMvcViewAbstractView as View; class Response implements ResponseInterface
{ public function setContentType$contentType { $this->_contentType = $contentType; return $this; }
}

接着看 Response 对象的初始化:

namespace TEMvcServerHttp; use TEMvcServerAbstractServer;
class Server extends AbstractServer
{ protected function createResponse { return new Response; }
}

如此说来,如果需要实现某个 URL 返回 JSON 格式的数据必须在 index.php 中:

// 启动Server
new JSONServernew SimplerequireROOT . /config/routes.php, new InterceptorManagerrequireROOT . /config/interceptors.php;

然后 JSONServer 里面设置 Response::setContentType ?
这个动静太大了,谁知道正确的姿势?!

直接

return arrayjson, arrayxxx => xxxx;

发表评论

电子邮件地址不会被公开。 必填项已用*标注