为了回答你关于有什么区别的问题,我在PHP文档中找到了
this comment(感谢Steven):
http_response_code is basically a shorthand way of writing a http
status header, with the added bonus that PHP will work out a suitable
Reason Phrase to provide by matching your response code to one of the
values in an enumeration it maintains within
php-src/main/http_status_codes.h. Note that this means your response
code must match a response code that PHP knows about. You can’t create
your own response codes using this method, however you can using the
header method.
In summary – The differences between http_response_code and header
for setting response codes:
Using http_response_code will cause PHP to match and apply a Reason Phrase from a list of Reason Phrases that are hard-coded into
the PHP source code.
Because of point 1 above, if you use http_response_code you must set a code that PHP knows about. You can’t set your own custom code,
however you can set a custom code (and Reason Phrase) if you use the
header method.
我很好奇一些流行的框架如何在标准响应中发送标头:
// status
header(sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText), true, $this->statusCode);
public function renderStatusLine()
{
$status = sprintf(
'HTTP/%s %d %s',
$this->getVersion(),
$this->getStatusCode(),
$this->getReasonPhrase()
);
return trim($status);
}
Yii也是如此
protected function sendHeaders()
{
if (headers_sent()) {
return;
}
$statusCode = $this->getStatusCode();
header("HTTP/{$this->version} $statusCode {$this->statusText}");
// ...