現在の位置: ホーム> 最新記事一覧> header_register_callbackとhttp_response_codeを使用してカスタムHTTPステータスコードを設定する方法は?

header_register_callbackとhttp_response_codeを使用してカスタムHTTPステータスコードを設定する方法は?

gitbox 2025-08-15

1。header_register_callback関数の概要

header_register_callbackは、PHPでめったに言及されていない機能です。 PHPがHTTP応答ヘッダーを出力する前に、コールバック関数を登録してHTTP応答ヘッダーを変更または追加できます。これは、この関数を使用して、PHPがヘッダー情報を出力する前にカスタム操作を実行できることを意味します。これには、応答のステータスコードの設定、カスタムヘッダー情報の追加などがあります。

関数プロトタイプ:

 <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>
  • $ callback :応答ヘッダーが送信される前に実行するコール可能な関数。このコールバック関数は、現在の応答のすべてのHTTPヘッダー情報を含む配列パラメーターを受信します。

このようにして、応答ヘッダーの内容を優れた柔軟性で制御し、応答を送信する前に調整することができます。

2。http_response_code関数の概要

http_response_codeは、HTTP応答ステータスコードの取得または設定に使用されるPHPの関数です。デフォルトでは、PHPがリクエストを処理すると、ステータスコードを自動的に200に設定します(リクエストが成功したことを示します)。ただし、他のステータスコードを返す場合は、 http_response_code関数を使用して変更できます。

関数プロトタイプ:

 <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>
  • $コード:設定するHTTPステータスコード。このパラメーターが省略されている場合、現在のステータスコードが返されます。

一般的なHTTPステータスコードは次のとおりです。

  • 200 :OK(成功して要求)

  • 404 :見つかりません(見つかりません)

  • 500 :内部サーバーエラー(内部サーバーエラー)

  • 403 :禁止(アクセスは禁止されています)

3。カスタムHTTPステータスコードの設定の例

header_register_callbackhttp_response_code関数を組み合わせて、カスタムHTTPステータスコードを非常に便利に設定できます。以下は、さまざまな条件に基づいてHTTPステータスコードを動的に設定する方法を示す簡単な例です。

サンプルコード:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// コールバック関数を登録して変更します HTTP 応答ヘッダー</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header_register_callback</span></span><span>(function() {
    </span><span><span class="hljs-comment">// 特定の条件を確認し、条件に応じて異なる条件を設定します HTTP ステータスコード</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">// 正常に作成されました,戻る 201 ステータスコード</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">// 正常に削除します,无内容戻る,戻る 204 ステータスコード</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">// 默认戻る 200 ステータスコード</span></span><span>
    }
});

</span><span><span class="hljs-comment">// 出力応答コンテンツ</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"レスポンシブコンテンツ..."</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

上記のコードでは、PHPがHTTP応答ヘッダーを送信する前に、最初にコールバック関数を登録してステータスコードを設定します。リクエストメソッドに応じて、異なるHTTPステータスコードを動的に返します。

  • 投稿リクエストのために、 201が作成したステータスコードが返され、リソースが正常に作成されていることを示します。

  • 削除要求の場合、 204 NOコンテンツステータスコードが返され、削除が成功したが、コンテンツは返されないことを示します。

  • 他のリクエストの場合、デフォルトの200 OKステータスコードが返されます。

4。注意すべきこと

header_register_callbackを使用する場合、特別な注意が必要なポイントがいくつかあります。

  1. コールオーダーheader_register_callback登録コールバック関数は、すべてのヘッダー情報が送信される前に実行されるため、応答が送信される前にヘッダー情報(ステータスコードを含む)の変更が完了するようにします。

  2. 応答ヘッダーの送信http_response_code関数を呼び出す場合、出力コンテンツ(HTMLやテキストなど)が送信される前にステータスコードが設定されることを確認する必要があります。それ以外の場合は、出力コンテンツの前に応答ヘッダーを送信する必要があるため、PHPが警告を投げます。

  3. 互換性の問題header_register_callbackは、特定のPHPバージョンまたは構成ではサポートされていない可能性のある使用されていない機能です。したがって、生産環境で使用する場合は、最初に互換性テストを実行することをお勧めします。

5。概要

header_register_callbackhttp_response_code関数を組み合わせることにより、PHP開発者は、さまざまなビジネスロジック要件に従ってカスタムHTTPステータスコードを簡単に返すことができます。これにより、インターフェイスの柔軟性を向上させるだけでなく、フロントエンドまたはクライアントがさまざまなステータスコードに従って処理できるようになり、システムの保守性とユーザーエクスペリエンスがさらに向上します。

この記事を通して、これら2つの機能をよりよく理解し、実際の開発でHTTP応答ヘッダーとステータスコードをより効率的に制御できることを願っています。