Slim Framework возвращает ответ без ответа «return $ response»

Я смущен тем, как 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 .