Slim.php`halt`方法的行为与记录不同?

时间:2013-10-29 09:33:52

标签: php http slim

Slim的文档内容涉及框架的halt方法:

  

暂停

     

Slim应用程序的halt()方法将立即返回   具有给定状态代码和正文的HTTP响应。这个方法接受   两个参数:HTTP状态代码和可选消息。苗条的意志   立即停止当前的应用程序并发送HTTP响应   具有指定状态和可选消息的客户端(如   反应机构)。这将覆盖现有的\ Slim \ Http \ Response   对象

e.g。     

//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?

1 个答案:

答案 0 :(得分:4)

不允许在路由回调之外调用halt()方法。 你应该这样使用;

$app->get('/method/', function () {
  //logical controls
  //do something
    //or
  $app->halt();
});