1

Slim 的文档中关于框架halt方法的内容如下:

Slim 应用程序的 halt() 方法将立即返回带有给定状态代码和正文的 HTTP 响应。此方法接受两个参数:HTTP 状态代码和可选消息。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 回答