我相信所有这些(甚至是die()或die(0))都是相同的。如果它们不完全相同,哪一个是成功退出脚本的首选选项?如果它们是相同的,是否有任何首选标准来指示成功的脚本完成?我倾向于使用exit;。
编辑:所有的答案都有"die()和exit()是相同的“,尽管我在我的问题中说了这一点。我更新了标题,希望能更清楚地表明这不是我的问题。我想从命令行脚本中清楚地表明成功。
发布于 2011-11-07 09:53:29
这些都是相同的。我很确定die()只是exit()的一个直接别名,但即使不是,它的行为也是一样的。
当这些函数中的一个函数被赋予字符串参数时,它会在终止进程之前打印出字符串。当它遇到一个小于255的整数时,该整数被认为是进程的返回码,它被传递回调用PHP脚本的进程。这在编写命令行应用程序时特别有用(PHP不仅仅是web应用程序!)。
至于exit、exit()和exit(0)之间的区别,实际上是没有区别的。前两者绝对没有区别,因为从技术上讲,exit是一种语言构造,而不是函数,因此可以像echo一样,使用括号或不使用括号来调用它。返回0代码意味着“这个程序运行成功/没有错误”,虽然我不知道当你没有传递参数时到底会发生什么,但PHP.net说没有参数的exit表示成功,所以我打赌它返回0,尽管PHP.net没有显示参数的默认值。
发布于 2011-11-07 09:48:12
正如一些人所提到的,die()和exit()是完全相同的。
如果您查看PHP documentation,您会发现有两个参数选项:
我建议使用异常和自定义top-level exception handler来管理失败情况,而不是使用die()或exit()。
通过这种方式,您可以更灵活地执行诸如自动错误记录之类的操作。此外,如果使用PHP实现JSON API,则此异常处理程序可以返回一个有效的、指示错误的JSON代码片段。
发布于 2013-05-28 23:56:58
我想说的是,就更好的语义而言,die($arg);应该用于异常或意外的终止,即使是在-of过程中-你仍然可以捕捉到它。exit($arg);应该用于进程的正常(预期/受控)结束,就像在for或while或switch结构的break;中一样,但有一个明确的结束。
不管怎样..我个人经常使用一个通用的if { } else { }结构来控制巨大进程或输出缓冲的不同分支,这样就不必使用“if { } else { }”。
我还在简单的错误捕捉语义中使用了die($arg),如
$db = mysql_connect([$args]) or die ($error); ...
https://stackoverflow.com/questions/8031921
复制相似问题