PHP - 为什么要实现 HTTP 消息?

PHP - why HTTP message implementations?

这可能是一个愚蠢的问题,但我一直在 PHP 上看到和阅读当前趋势中的 HTTP 消息或 PSR-7 以进行开发。为什么突然间我们需要 PHP 中的 HTTP 消息实现来进行现代 Web 开发?

比如Slim 3,现在我们要做这个,

$app->get('/hello/{name}', function ($request, $response, $args) {
    $response->write("Hello, " . $args['name']);
    return $response;
});

我们现在必须 'wrap' 请求的 结果 在 HTTP 响应对象中。

下面这种响应请求的经典方式有什么问题?

echo 'Hello, ' . $_GET('name');

对我来说更容易理解。

实施 HTTP 消息有什么好处?我们什么时候需要使用它们?为什么?

首先,我建议您阅读 section 3 of PSR-7 meta document

我将尝试总结使用一组通用接口来描述 HTTP 消息的一些好处。

您可以使用超全局变量(如 $_GET$_POST),但它们是全局可变状态。随着这个单元和代码的集成测试变得困难。

出于这些原因,许多 PHP 框架决定实施抽象来表示 HTTP 消息(例如,参见 Symfony HttpFoundation 或 Zend\Http)。

这导致了任何应用程序都基于 HTTP 消息的特定实现的情况,以至于它很难在使用其他框架构建的项目中使用。

这就是一组通用接口有助于抽象 HTTP 消息并以与框架无关的方式使用它们的原因。