退出,退出(),退出(0),死(),死(0) – 如何退出脚本

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

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

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

当这些函数中的一个被赋予一个string参数时,它会在终止进程之前打印出string。 当它遇到一个255以下的整数时,这个整数被认为是进程的返回码,它被传回给调用PHP脚本的进程。 编写命令行应用程序(PHP不是纯网站!)时,这是特别有用的。

至于exitexit()exit(0)之间的区别,实际上没有。 前两者之间肯定没有区别,因为exit在技​​术上是一种语言结构,而不是函数,因此可以使用或不使用括号来调用,就像echo一样。 返回代码0意味着“这个程序运行成功/没有错误”,虽然我不知道什么时候你不通过一个参数, PHP.net说,一个无参数的exit表明成功,所以我会打赌它返回0 ,虽然PHP.net不显示默认的参数。

正如几个人所说的,die()和exit()完全一样。

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

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

  • 一个string值。 这将在退出时显示给浏览器。

我不build议使用die()或exit(),而是使用exception和自定义顶级exception处理程序来pipe理失败情况。

你有更多的灵活性来做自动错误logging等事情。 另外,如果您使用PHP来实现JSON API,则此exception处理程序可以返回有效的,错误指示的JSON片段。

我会说,关于更好的语义die($arg); 应该用于exception或意外的终止,即使 – 当然,你仍然抓住了它。 并exit($arg); 应该用于进程的正常(预期/受控)结束,就像在break; 为一个或一个或一个switch结构,但有一个明确的目的。

尽pipe如此,我个人经常使用一个通用的if { } else { }结构来控制巨大进程的不同分支或输出缓冲,所以不必使用“exit”。

我也使用die($arg)在简单的错误捕捉语义如

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

你怎么看? 希望能帮助到你。

最好的祝福,

jjyepez

die(); 只是exit();的同义词exit(); function是一样的。

标准的方法是使用退出代码0表示成功,而其他任何表示错误的条件。

die()通常用于使用错误输出来终止脚本:

 die("There was a fatal error"); 

在那里作为退出通常用作成功退出(至less在我的编码)

PHP手册说这些function是相同的。

die完全等同于exit

从手册 :

如果status是一个整数,则该值将被用作退出状态。

这只有在你有一些基于退出状态的包装的时候才有用。 除非你有特别需要向外界报告退出代码,否则exit;