1

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 でないのはなぜですか?

4

1 に答える 1

4

ルート コールバックの外で halt() メソッドを呼び出すことはできません。このように使用する必要があります。

$app->get('/method/', function () {
  //logical controls
  //do something
    //or
  $app->halt();
});   
于 2013-11-28T22:05:52.817 に答える