一尘不染

如何在不维护状态名称数组的情况下用PHP发送状态代码?

php

我要做的就是404从PHP 发送状态代码-
但采用通用方式。两者Router::statusCode(404)Router::statusCode(403)以及其他任何有效的HTTP状态代码均应正常工作。

我确实知道,您可以将状态代码指定为的第三个参数header。遗憾的是,这仅在您指定时有效string。因此,呼吁header('', false, 404)没有 工作。

而且我知道,可以通过header带有状态行的呼叫发送状态代码:header('HTTP/1.1 404 Not Found')

但是要做到这一点,我必须Not Found为所有状态码(404)维护一个原因短语数组()。我不喜欢这样的想法,因为它某种程度上是PHP已经做的事情的重复(对于第三个header参数)。

所以,我的问题是:是否有任何简单干净的方法来用PHP发送状态代码?


阅读 197

收藏
2020-05-29

共1个答案

一尘不染

PHP> = 5.4.0中为此提供了一个新功能。
http_response_code

简单地做http_response_code(404)

如果您的PHP版本较低,请尝试header(' ', true, 404);(请注意字符串中的空格)。

如果还要设置原因短语,请尝试:

header('HTTP/ 433 Reason Phrase As You Wish');
2020-05-29