是否需要死亡;在响应api调用时打印json_encode()之后


Is there a need for die; after print json_encode() when responding to api calls?

我正在创建各种"我的版本"的web服务。基本上,它是一个有很多动作的yii控制器。。每个动作如下

public function actionNameOfWebService()
{
   if(isset($_POST))
   {
      // do some processing, when I have a result... I do .. 
      print CJSON::encode('result.');
   }
   else
   {
      print CJSON::encode('only post methods allowed');
   }
}

许多这样的操作都在一个特定的控制器中。一切都很好。。在我投入生产之前,我是否需要添加一个"die"每次打印后的语句CJSON::encode语句。

由于您使用的是Yii,您应该简单地使用:

Yii::app()->end();

http://www.yiiframework.com/doc/api/1.1/CApplication#end-详细

否。您并不绝对需要dieexit。我认为使用它有点反模式。它破坏了封装。

如果您设置了某种输出缓冲,那么die实际上可能不好。如果你代理一个请求,die将终止整个过程等。还有更多类似的场景。

您肯定应该使用Yii::app()->end();。这是因为如果您有任何调试输出或分析输出,除非您告诉应用程序完成,否则这些输出也将包含在响应中。如果您不包括这一点,您的验证可能会中断。

您不必这样做,但当您添加它时,您将确保在JSON之后不会打印任何内容,这将破坏解析器读取该数据的尝试。

但是,如果您知道没有其他内容,您可以跳过它。