exit,exit(),exit(0),die(),die(0) - 如何退出脚本

Exp*_*lls 76 php

我相信所有这些(甚至die()或者die(0))都是相同的.如果它们不相同,哪个成功退出脚本?如果它们相同,是否有任何首选标准表示脚本成功完成?我倾向于使用exit;.

编辑:即使我在我的问题中说,所有的答案都" die()exit()相同".我更新了标题,希望更清楚,这不是我的问题.我想从命令行脚本中清楚地表明成功.

Age*_*rum 64

这些都是相同的.我很确定die()它只是一个直接的别名exit(),但即使它不是,它仍然行为相同.

当其中一个函数被赋予字符串参数时,它会在终止进程之前打印出该字符串.当遇到255以下的整数时,该整数被视为进程的返回代码,该代码将被传递回调用PHP脚本的进程.这在编写命令行应用程序时非常有用(PHP不是仅限Web的!).

至于之间的差异exit,exit()exit(0),真的是没有的.前两个之间肯定没有区别,因为exit从技术上讲,它是一种语言结构,而不是一个函数,所以可以使用或不使用括号来调用它,就像它一样echo.返回代码0意味着"这个程序成功运行/没有错误",虽然我不知道当你没有传递参数时究竟发生了什么,但是PHP.net说没有参数exit表示成功,所以我敢打赌它返回0,但PHP.net再次没有显示参数的默认值.

  • `exit(0)`表示退出成功,`exit(1)`表示退出失败. (3认同)

nsa*_*ers 6

正如几个人所提到的,die()和exit()完全相同.

如果查看PHP文档,参数有两个选项:

  • 一个数值.这仅在您从命令行使用PHP而非Web服务器时才有用.值为零表示成功.非零表示发生了故障情况.

  • 字符串值.退出时,这将显示给浏览器.

我建议使用异常和自定义顶级异常处理程序来管理失败条件,而不是die()或exit().

您可以更灵活地执行自动错误记录等操作.此外,如果您使用PHP实现JSON API,则此异常处理程序可以回送有效的,错误指示的JSON代码段.


jjy*_*pez 5

我会说,关于更好的语义die($arg);应该用于异常或意外终止,即使当然 - 当然 - 你仍然抓住了它.并且exit($arg);应该被用于正常的(预期/控制)的过程的结束,如在break;一个forwhile或一switch结构,但与最终结束.

然而..我个人经常使用一般if { } else { }结构来控制巨大进程的不同分支或输出缓冲,所以不必使用"退出"..

我也使用die($arg)像in中那样的简单错误捕获语义

$db = mysql_connect([$args]) or die ($error); ...