Position actuelle: Accueil> Derniers articles> Comment définir les codes d'état HTTP personnalisés à l'aide de Header_Register_Callback et HTTP_RESPONSE_CODE?

Comment définir les codes d'état HTTP personnalisés à l'aide de Header_Register_Callback et HTTP_RESPONSE_CODE?

gitbox 2025-08-15

1. Présentation de la fonction Header_register_Callback

header_register_callback est une fonction rarement mentionnée dans PHP. Il vous permet d'enregistrer une fonction de rappel pour modifier ou ajouter l'en-tête de réponse HTTP avant que PHP n'éprète l'en-tête de réponse HTTP. Cela signifie que vous pouvez utiliser cette fonction pour effectuer des opérations personnalisées avant que PHP puisse les informations d'en-tête, y compris la définition du code d'état de la réponse, l'ajout d'informations d'en-tête personnalisées, etc.

Prototype de fonction:

 <span><span><span class="hljs-title function_ invoke__">header_register_callback</span></span><span>(</span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$callback</span></span><span>)
</span></span>
  • $ rappel : une fonction appelable à exécuter avant l'envoi de l'en-tête de réponse. Cette fonction de rappel reçoit un paramètre de tableau , qui contient toutes les informations d'en-tête HTTP pour la réponse actuelle.

De cette façon, vous pouvez contrôler le contenu de l'en-tête de réponse avec une grande flexibilité, en vous assurant de s'adapter avant d'envoyer la réponse.

2. Présentation de la fonction http_response_code

http_response_code est une fonction de PHP qui est utilisée pour obtenir ou définir le code d'état de réponse HTTP. Par défaut, lorsque PHP traite une demande, il définit automatiquement le code d'état à 200 (indique que la demande est réussie). Cependant, si vous souhaitez renvoyer d'autres codes d'état, vous pouvez utiliser la fonction http_response_code pour le modifier.

Prototype de fonction:

 <span><span><span class="hljs-title function_ invoke__">http_response_code</span></span><span>(</span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$code</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span>)
</span></span>
  • $ Code : le code d'état HTTP à définir. Si ce paramètre est omis, le code d'état actuel est renvoyé.

Les codes d'état HTTP courants comprennent:

  • 200 : OK (demandez à succès)

  • 404 : Non trouvé (non trouvé)

  • 500 : Erreur du serveur interne (erreur du serveur interne)

  • 403 : Forbidden (l'accès est interdit)

3. Exemple de définition d'un code d'état HTTP personnalisé

En combinant les fonctions en tête_register_callback et http_response_code , nous pouvons définir très facilement les codes d'état HTTP personnalisés. Ce qui suit est un exemple simple montrant comment définir dynamiquement les codes d'état HTTP basés sur différentes conditions.

Exemple de code:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Enregistrez une fonction de rappel pour le modifier HTTP En-tête de réponse</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header_register_callback</span></span><span>(function() {
    </span><span><span class="hljs-comment">// Vérifiez certaines conditions et définissez différentes conditions en fonction des conditions HTTP Code d&#39;état</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$_SERVER</span></span><span>[</span><span><span class="hljs-string">'REQUEST_METHOD'</span></span><span>] === </span><span><span class="hljs-string">'POST'</span></span><span>) {
        </span><span><span class="hljs-title function_ invoke__">http_response_code</span></span><span>(</span><span><span class="hljs-number">201</span></span><span>); </span><span><span class="hljs-comment">// Créé avec succès,retour 201 Code d&#39;état</span></span><span>
    } </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-variable">$_SERVER</span></span><span>[</span><span><span class="hljs-string">'REQUEST_METHOD'</span></span><span>] === </span><span><span class="hljs-string">'DELETE'</span></span><span>) {
        </span><span><span class="hljs-title function_ invoke__">http_response_code</span></span><span>(</span><span><span class="hljs-number">204</span></span><span>); </span><span><span class="hljs-comment">// Supprimer avec succès,无内容retour,retour 204 Code d&#39;état</span></span><span>
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-title function_ invoke__">http_response_code</span></span><span>(</span><span><span class="hljs-number">200</span></span><span>); </span><span><span class="hljs-comment">// 默认retour 200 Code d&#39;état</span></span><span>
    }
});

</span><span><span class="hljs-comment">// Contenu de réponse de sortie</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Contenu réactif..."</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Dans le code ci-dessus, nous enregistrons d'abord une fonction de rappel pour définir le code d'état avant que PHP envoie l'en-tête de réponse HTTP. Selon la méthode de demande, nous renvoyons dynamiquement différents codes d'état HTTP:

  • Pour la demande de poste , un code d'état créé 201 est renvoyé, indiquant que la ressource est créée avec succès.

  • Pour la demande de suppression , un code d'état 204 sans contenu est renvoyé, indiquant que la suppression est réussie, mais aucun contenu n'est renvoyé.

  • Pour les autres demandes, le code d'état par défaut de 200 OK est renvoyé.

4. Choses à noter

Lorsque vous utilisez Header_register_Callback , il y a des points qui nécessitent une attention particulière:

  1. Ordre d'appel : La fonction de rappel enregistrée Header_Register_Callback est exécutée avant l'envoi de toutes les informations d'en-tête, donc elle garantit que la modification des informations d'en-tête (y compris le code d'état) est terminée avant l'envoi de la réponse.

  2. Entendre l'en-tête de réponse : lors de l'appel de la fonction HTTP_Response_code , vous devez vous assurer que le code d'état est défini avant que tout contenu de sortie (tel que HTML ou Text) soit envoyé. Sinon, PHP lancera un avertissement car l'en-tête de réponse doit être envoyé avant le contenu de sortie.

  3. Problèmes de compatibilité : en tête_register_callback est une fonction moins utilisée qui peut ne pas être prise en charge dans certaines versions ou configurations PHP. Par conséquent, lorsqu'il est utilisé dans un environnement de production, il est préférable d'effectuer d'abord des tests de compatibilité.

5. Résumé

En combinant les fonctions en tête_register_callback et http_response_code , les développeurs PHP peuvent facilement renvoyer les codes d'état HTTP personnalisés en fonction de différentes exigences de logique métier. Cela aide non seulement à améliorer la flexibilité de l'interface, mais permet également au frontal ou au client de traiter en fonction des différents codes d'état, améliorant davantage la maintenabilité et l'expérience utilisateur du système.

J'espère que grâce à cet article, vous pouvez mieux comprendre et utiliser ces deux fonctions pour contrôler plus efficacement les en-têtes de réponse HTTP et les codes d'état dans le développement réel.