HttpFoundation:リクエストとレスポンス
スーパーグローバルをHttpFoundationのRequestでラップし、Responseオブジェクトを構築します
「HttpFoundation:リクエストとレスポンス」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。
HttpFoundationとは
Symfony HttpFoundationは、低レベルなHTTPスーパーグローバル($_GET、$_POST、$_SERVER)を、整理されたオブジェクト指向のクラスでラップする独立したPHPコンポーネントです。
HttpFoundationのインストール
Composerを使って独立したパッケージとしてインストールします。
$ composer require symfony/http-foundationグローバル変数からRequestを作成する
スーパーグローバルから現在のHTTPリクエストを取得します。
<?php
use Symfony\Component\HttpFoundation\Request;
$request = Request::createFromGlobals();
echo $request->query->get("page", 1); // GET param
echo $request->request->get("email"); // POST param
echo $request->headers->get("User-Agent"); // header入力値の読み取り
Requestは、入力元ごとに型付きのバッグを提供します。
<?php
$request->query->get("id"); // $_GET
$request->request->get("name"); // $_POST
$request->attributes->get("key"); // route attributes
$request->cookies->get("token"); // $_COOKIE
$request->files->get("avatar"); // $_FILES
$request->server->get("REMOTE_ADDR"); // $_SERVERRequestのメソッド
HTTPメソッドとパスを確認します。
<?php
$request->getMethod(); // "GET", "POST", etc.
$request->isMethod("POST"); // bool
$request->getPathInfo(); // "/api/users/1"
$request->getHost(); // "example.com"
$request->isSecure(); // true if HTTPSResponseの構築
HTTPレスポンスを作成して送信します。
<?php
use Symfony\Component\HttpFoundation\Response;
$response = new Response("Hello World", 200, [
"Content-Type" => "text/plain",
]);
$response->send();JsonResponse
正しいContent-Typeヘッダーを自動的に付けてJSONを返します。
<?php
use Symfony\Component\HttpFoundation\JsonResponse;
$response = new JsonResponse(["status" => "ok", "id" => 42]);
$response->send();RedirectResponse
ユーザーを別のURLへリダイレクトします。
<?php
use Symfony\Component\HttpFoundation\RedirectResponse;
$response = new RedirectResponse("/dashboard", 302);
$response->send();ヘッダーとCookieの設定
送信する前に、レスポンスへヘッダーとCookieを追加します。
<?php
$response->headers->set("X-Rate-Limit", "100");
$response->headers->setCookie(
new Cookie("prefs", "dark", time() + 86400, "/", null, true, true)
);BinaryFileResponse
BinaryFileResponseを使用して、ファイルのダウンロードを効率的にストリーミングします。
<?php
use Symfony\Component\HttpFoundation\BinaryFileResponse;
$response = new BinaryFileResponse("/path/to/file.pdf");
$response->setContentDisposition("attachment", "report.pdf");
$response->send();StreamedResponse
StreamedResponseはデータを生成された時点で送信するため、大規模なエクスポートやリアルタイムストリーミングに適しています。
まとめ
HttpFoundationはスーパーグローバルをRequestでラップし、Response、JsonResponse、RedirectResponseを使ってレスポンスを構築します。LaravelとSymfonyの両方で使用されるHTTPレイヤーです。
理解度チェック
HttpFoundationのRequestでGETクエリパラメータにアクセスするバッグはどれですか?
よくある質問
「HttpFoundation:リクエストとレスポンス」レッスンは無料ですか?
はい。「HttpFoundation:リクエストとレスポンス」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。
「HttpFoundation:リクエストとレスポンス」で何を学びますか?
スーパーグローバルをHttpFoundationのRequestでラップし、Responseオブジェクトを構築します ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
PHP Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「HttpFoundation:リクエストとレスポンス」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPHP Academyレッスンでコードを書いて実行できますか?
はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- HttpFoundation:リクエストとレスポンス
- DependencyInjectionコンテナ
- EventDispatcher:疎結合なイベント
- Consoleコンポーネント:CLIコマンド