Это может быть глупый вопрос, но я видел и читал HTTP-сообщения или PSR-7 в современной тенденции развития PHP. Почему вдруг нам нужны реализации HTTP-сообщений на PHP для современной веб-разработки?
Например, с Slim 3, теперь мы должны сделать это,
$app->get('/hello/{name}', function ($request, $response, $args) {
$response->write("Hello, " . $args['name']);
return $response;
});
Теперь мы должны ‘заворачивать’ запрос результат в объекте ответа HTTP.
Что не так с этим старым классическим способом отвечать на запросы запрос ниже?
echo 'Hello, ' . $_GET('name');
Это легче понять для меня.
Каковы преимущества реализации HTTP-сообщений? Когда нам нужно их использовать? И почему?
Во-первых, я бы рекомендовал вам прочитать раздел 3 мета-документа PSR-7.
Я попытаюсь обобщить некоторые преимущества наличия общего набора интерфейсов для описания HTTP-сообщений.
Вы можете использовать переменные superglobals (как $_GET
а также $_POST
), но они являются глобально изменяемым состоянием. Вместе с этим модулем и интеграционным тестированием вашего кода становится сложно.
По этим причинам многие PHP-фреймворки решили реализовать абстракцию для представления HTTP-сообщений (см., Например, Symfony HttpFoundation или Zend \ Http).
Это привело к ситуации, когда любое приложение основывалось на конкретной реализации HTTP-сообщений, поэтому его было трудно использовать в проектах, построенных с использованием других сред.
Вот почему общий набор интерфейсов помогает абстрагировать HTTP-сообщения и работать с ними независимо от платформы.
Клиент отправит запрос и вернет ответ. Как разработчик, вы создадите и заполните запрос, а затем проанализируете ответ. Оба запроса и ответы являются неизменными; если вы вносите изменения — например, вызывая методы установки — вы должны захватить возвращаемое значение, так как это новый экземпляр.