Slim のドキュメントには、フレームワークのhalt
メソッドに関して次のように書かれています。
停止
Slim アプリケーションの halt() メソッドは、指定されたステータス コードと本文を含む HTTP 応答をすぐに返します。このメソッドは、HTTP ステータス コードとオプションのメッセージの 2 つの引数を受け取ります。Slim は現在のアプリケーションを即座に停止し、指定されたステータスとオプションのメッセージ (応答本文として) を含む HTTP 応答をクライアントに送信します。これにより、既存の \Slim\Http\Response オブジェクトがオーバーライドされます。
例えば
//Send a default 500 error response
$app->halt(500);
//Or if you encounter a Balrog...
$app->halt(403, 'You shall not pass!');
この分野でいくつかの問題が発生しているため、ドキュメントに従って、次のテスト アプリケーションを作成しました。
<?php
// Include Slim framework dependencies;
require '../lib/Slim/Slim.php';
\Slim\Slim::registerAutoloader(); // Slim's autloader;
$app = new \Slim\Slim();
//Send a default 500 error response
$app->halt(500);
そして興味深いことに、私が得る応答は次のとおりです。
Fatal error: Uncaught exception 'Slim\Exception\Stop' in D:\projects\myApplication\api\lib\Slim\Slim.php:1004 Stack trace: #0 D:\projects\myApplication\api\lib\Slim\Slim.php(1024): Slim\Slim->stop() #1 D:\projects\myApplication\api\app\app.php(10): Slim\Slim->halt(500) #2 D:\projects\myApplication\api\public\index.php(4): include_once('D:\__projects\S...') #3 {main} thrown in D:\projects\myApplication\api\lib\Slim\Slim.php on line 1004
言うまでもなく、HTTP 応答コードは 200 です。では、Slim では正確に何が起こっているのでしょうか? HTTP 応答コードが 500 でないのはなぜですか?