Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Slim.php`halt`方法的行为与文档中的不同?_Php_Http_Slim - Fatal编程技术网

Slim.php`halt`方法的行为与文档中的不同?

Slim.php`halt`方法的行为与文档中的不同?,php,http,slim,Php,Http,Slim,Slim的文档对框架的halt方法进行了如下说明: 停止 Slim应用程序的halt()方法将立即返回 具有给定状态代码和正文的HTTP响应。此方法接受 两个参数:HTTP状态代码和可选消息。苗条的意志 立即停止当前应用程序并向发送HTTP响应 具有指定状态和可选消息的客户端(作为 答复机构)。这将覆盖现有的\Slim\Http\Response 反对 e、 g。 由于我在这方面遇到了一些问题,根据他们的文档,我构建了以下测试应用程序: <?php // Include Slim fra

Slim的文档对框架的
halt
方法进行了如下说明:

停止

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

e、 g。 由于我在这方面遇到了一些问题,根据他们的文档,我构建了以下测试应用程序:

<?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);

不用说,HTTP响应代码是200。那么斯利姆到底怎么了?为什么HTTP响应代码不是500?

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

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

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

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

“为什么HTTP响应代码不是500?”——因为由于未捕获异常导致的致命错误,脚本执行在某个时候被取消了…?简言之:根据Slim文档,这似乎是一个关于如何使用
halt
方法的完整示例,该方法无法按预期和文档所述工作(!)如果你认为他们的文档有问题,那就和他们一起去解决吧……你发布的测试应用程序是你全部代码吗$app->halt()是在路由中调用的,我在脚本末尾既没有看到路由,也没有看到$app->run()。“为什么HTTP响应代码不是500?”——因为由于未捕获异常导致的致命错误,脚本执行在某个时候被取消了…?简言之:根据Slim文档,这似乎是,一个关于如何使用
halt
方法的完整示例,该方法无法按预期和文档(!)工作。如果您认为他们的文档有错误,那么请与他们一起讨论……您发布的测试应用程序是否包含了您的全部代码$app->halt()用于在路由中调用,我在脚本末尾既看不到路由也看不到$app->run()。另外,如果您想在中间件中取消并提前发送响应,请在中间件类中使用
$this->app->response()->setStatus()
设置状态,并且不要调用
$this->next()->call()
。另外,如果您想在中间件中取消并提前发送响应,请在中间件类中使用
$this->app->response()->setStatus()
设置状态,并且不要调用
$this->next()->call()
$app->get('/method/', function () {
  //logical controls
  //do something
    //or
  $app->halt();
});