0Pricing
PHP Academy · 课时

HttpFoundation:请求与响应

使用 HttpFoundation Request 封装超全局变量,并构建 Response 对象。

HttpFoundation:请求与响应 是 CoddyKit 上的免费 PHP Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 PHP Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 PHP Academy 课程共包含 4 节课。

什么是 HttpFoundation?

Symfony HttpFoundation 是一个独立的 PHP 组件,它将原始 HTTP 超全局变量($_GET、$_POST、$_SERVER)封装在整洁的 OO 类中。

安装 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"); // $_SERVER

Request 方法

检查 HTTP 方法和路径。

<?php
$request->getMethod();       // "GET", "POST", etc.
$request->isMethod("POST"); // bool
$request->getPathInfo();    // "/api/users/1"
$request->getHost();        // "example.com"
$request->isSecure();       // true if HTTPS

构建响应

创建并发送 HTTP 响应。

<?php
use Symfony\Component\HttpFoundation\Response;

$response = new Response("Hello World", 200, [
    "Content-Type" => "text/plain",
]);
$response->send();

JsonResponse

返回 JSON,并自动设置正确的 Content-Type 标头。

<?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:请求与响应」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 PHP Academy 课程的其余内容,请升级到 CoddyKit PRO。 PHP Academy 课程共包含 4 节课。

「HttpFoundation:请求与响应」这节课中我会学到什么?

使用 HttpFoundation Request 封装超全局变量,并构建 Response 对象。 你通过在浏览器中直接运行的动手代码来练习 PHP Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 PHP Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 PHP Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「HttpFoundation:请求与响应」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 PHP Academy 课中编写并运行代码吗?

能。每节 PHP Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. HttpFoundation:请求与响应
  2. DependencyInjection 容器
  3. EventDispatcher:解耦事件
  4. 控制台组件:CLI 命令
← 返回 PHP Academy