【发布时间】:2019-08-06 17:51:20
【问题描述】:
我想在 slims 的 $response 对象上链接多个方法调用,但如果我这样做了,我会收到一个错误(状态 500)并且没有任何反应。 这也可能是缺乏基本的 PHP 知识,我在 PHP 方面不是很有经验,这是我第一次使用 slim 或任何服务器端/API 框架。
我尝试过颠倒呼叫的顺序,并在不同的行中进行,但没有成功。长期目标是为更新应用程序构建 API。所以我将不得不处理带有多个参数的 get 请求,评估它们并根据结果,执行并返回不同的响应。
// this one fails, i set the status to 900 on purpose just to see what happens
$app->get('/', function (Request $request, Response $response, array $args) {
$response->getBody()->write("Slim main page")->withStatus(900);
return $response;
});
第一个示例确实在网络选项卡上给了我一个 500 错误。我猜这会暗示某种类型的语法错误?如果我稍微改变这条路线看起来像这样:
# this one works fine, except the status code setting gets ignored, but why?
$app->get('/', function (Request $request, Response $response, array $args) {
$response->write("Slim main page")->withStatus(900);
return $response;
});
事情几乎成功了,但由于某种原因没有设置状态码。
我希望第一个返回字符串“slim main page”,状态码为 900。即使我使用非编造的状态码,此设置也会被忽略。
第二个代码块只是为了测试目的而做的改动。
我很确定这是一个新事物,但我真的迷失了在这里,所以任何建议,或者除了苗条的文档之外的一些万无一失的文章/文档都值得赞赏。
【问题讨论】:
-
据我所知,我没有使用任何中间件,我有一个最小的 php 服务器,基本上只有包含所示代码的 php 文件,以及一些其他实验功能。但是我打开了错误日志并得到了这个:消息:调用整数上的成员函数 withStatus()
-
现在我知道出了什么问题。请看我的回答。