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 消息并以与框架无关的方式使用它们的原因。
这可能是一个愚蠢的问题,但我一直在 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 消息并以与框架无关的方式使用它们的原因。