Establecer un código de respuesta HTTP en PHP (bajo Apache)

Dado los dos métodos siguientes para establecer un código de respuesta HTTP en PHP (específicamente, bajo Apache):

Método 1:

http_response_code(404); 

Método 2:

 header("HTTP/1.0 404 Not Found"); 

Mis preguntas son:

  1. Aparte del hecho de que http_response_code solo está disponible en PHP 5.4 o superior, ¿cuáles son las diferencias entre los dos enfoques y por qué / cuándo usar uno sobre el otro?
  2. ¿De dónde viene la Frase de Motivo cuando se usa el primer ejemplo? (He verificado y se genera una frase de motivo de alguna parte)

Debido a que estoy siendo devuelto al olvido sin ninguna razón aparente, he logrado responder a esto yo misma buscando en el código fuente de PHP. Espero que esto sirva como referencia para cualquier otra persona que intente resolver esto.

Los dos métodos son esencialmente equivalentes funcionalmente. http_response_code es básicamente una manera abreviada de escribir un encabezado de estado http, con la ventaja añadida de que PHP elaborará una Frase de Motivo adecuada para proporcionar al hacer coincidir su código de respuesta con uno de los valores en una enumeración que mantiene dentro de php-src / main / http_status_codes.h .

Tenga en cuenta que esto significa que su código de respuesta debe coincidir con un código de respuesta que conozca PHP. No puede crear sus propios códigos de respuesta con este método, sin embargo, puede usar el método de header . Tenga en cuenta también que http_response_code solo está disponible en PHP 5.4.0 y versiones posteriores.

En resumen: las diferencias entre http_response_code y el header para establecer los códigos de respuesta:

  1. El uso de http_response_code provocará que PHP haga coincidir y aplique una Frase de motivo de una lista de Frases de motivo que están codificadas en el código fuente de PHP.

  2. Debido al punto 1 anterior, si usa http_response_code debe establecer un código que conozca PHP. No puede configurar su propio código personalizado, sin embargo, puede establecer un código personalizado (y una Frase de motivo) si usa la función de header .

  3. http_response_code solo está disponible en PHP 5.4.0 y superior