Webアプリケーション開発では、ページジャンプは一般的な要件です。 PHP開発者は通常、ヘッダー関数を使用してジャンプを達成しますが、その使用には特定の制限があり、コードが繰り返される場合があります。コードの保守性と清潔さを改善するために、ジャンプロジックをカプセル化できます。
Redirectという関数をカプセル化することにより、ジャンプ操作を均一に管理できます。
関数は、ジャンプURL、HTTPステータスコード、カスタムヘッダー情報の合格をサポートします。
/**
* 指定されたものにジャンプしますURL
* @param string $url 宛先アドレス
* @param int $statusCode HTTPステータスコード,デフォルト302
* @param array $headers カスタマイズHTTP頭,キー価値ペア形式
*/
function redirect(string $url, int $statusCode = 302, array $headers = [])
function redirect(string $url, int $statusCode = 302, array $headers = []) {
// 設定HTTPステータスコード
http_response_code($statusCode);
// 添加カスタマイズ頭
foreach ($headers as $name => $value) {
header("$name: $value");
}
// ジャンプを実行します
header("Location: $url");
exit;
}
この実装では、 http_response_codeを使用してステータスコードを設定し、ヘッダーにカスタムヘッダーを追加し、最後にロケーションヘッダーを使用してジャンプを完了してスクリプトの実行が終了するようにします。
カプセル化後、ジャンプ関数の呼び出しはより簡潔で柔軟です。
redirect('https://example.com');
この呼び出しは、ユーザーをhttps://example.comページに導きます。
ステータスコードの設定をサポートして、永続的なジャンプなどのさまざまなジャンプ動作を実現します。
redirect('https://new.example.com', 301);
この呼び出しは301ステータスコードを返し、永続的なジャンプを示します。
ヘッダー情報を3番目のパラメーターに渡すことができ、特別なニーズを満たすことができます。
redirect('https://example.com', 302, [
'Referer' => 'https://previous-page.com'
]);
ジャンプすると、参照ヘッダーが最初に設定され、ジャンプが実行されます。
ジャンプ操作をカプセル化することにより、コードの明確さと再利用性を改善するだけでなく、ジャンプ動作の柔軟な制御を促進します。ステータスコードの調整であろうとカスタムヘッダーの追加であろうと、カプセル化関数は多様なニーズを効果的にサポートできます。これは、PHPバックエンド開発の推奨慣行です。