我开始学习PHP Slim-Framework v3。但我很少发现这很困难。
这是我的代码:
$app = new \Slim\App(["settings" => $config]);
$app->get('/', function(Request $request, Response $response, $args = []) {
$error = array('result' => false, 'message' => 'Bad Request', 'dev'=>'', 'data' => []);
$response->withStatus(500)->getBody()->write(json_encode($error));
});
现在,当我遇到服务问题时,我想以状态500回复用户。但不幸的是,这不起作用。虽然我收到了回复,但它返回200状态而不是500状态。
我做错了什么或者我错过了什么?
我试过调查其他问题,但我找不到任何帮助我的事情。
答案 0 :(得分:3)
Response
- 对象是不可变的,因此无法更改。方法with*()
确实返回Response
- 对象的副本,其中包含更改的值。
$app->get('/', function(Request $request, Response $response, $args = []) {
$error = array('result' => false, 'message' => 'Bad Request', 'dev'=>'', 'data' => []);
$response->write(json_encode($error)); // helper method for ->getBody()->write($val)
return $response->withStatus(500);
});
请参阅this answer为什么您不需要重新分配write
上的值。
您也可以使用withJson
代替:
$app->get('/', function(Request $request, Response $response, $args = []) {
$error = array('result' => false, 'message' => 'Bad Request', 'dev'=>'', 'data' => []);
return $response->withJson($error, 500);
});