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?
答案 0 :(得分:4)
不允许在路由回调之外调用halt()方法。 你应该这样使用;
$app->get('/method/', function () {
//logical controls
//do something
//or
$app->halt();
});