Я смущен тем, как Slim возвращает ответ без return $response
в соответствии с документацией.
Если у меня есть следующий код:
$app->get('/login', function ($request, $response, $args) { $response = $this->view->render($response, "login.php"); return $response; });
Когда я звоню /login
вхожу через мой браузер, он отображает мой шаблон login.php
, чего я ожидаю.
Но если я удаляю return $response
он все еще работает, что кажется неправильным?
$app->get('/login', function ($request, $response, $args) { $response = $this->view->render($response, "login.php"); });
Оба набора кода имеют одинаковый вывод.
Как Slim показывает ответ, если $response
не возвращается?
Тело – это Psr\Http\Message\StreamInterface
которое не является неизменным, когда вы добавляете что-то в тело, которое вы обычно делаете:
$body = $response->getBody(); $body->write($string); $body->write($string2);
Это изменяет содержимое потока, но все еще находится в одном объекте $response
-Object.
Поскольку рендеринг представления только добавляет к телу, нет необходимости фактически возвращать $response
.