die()
或die(0)
)都是相同的。如果它们不同,哪一个更适合成功退出脚本?如果它们是相同的,是否有任何首选标准来指示脚本成功完成?我倾向于使用exit;
。编辑:所有答案都是“
die()
和exit()
是相同的”,即使我在我的问题中说过了。我更新了标题,希望能更清楚地表明这不是我的问题。我想清楚地指示命令行脚本的成功。die()
或die(0)
)都是相同的。如果它们不同,哪一个更适合成功退出脚本?如果它们是相同的,是否有任何首选标准来指示脚本成功完成?我倾向于使用exit;
。die()
和exit()
是相同的”,即使我在我的问题中说过了。我更新了标题,希望能更清楚地表明这不是我的问题。我想清楚地指示命令行脚本的成功。这些函数是完全相同的。我非常确定die()
只是对exit()
的直接别名,但即使不是这样,它们的功能仍然是一样的。
当这些函数被传入一个字符串参数时,在终止进程之前会将该字符串打印出来。当遇到小于255的整数时,该整数被视为进程的返回代码,并传递回调用PHP脚本的进程。在编写命令行应用程序时特别有用(PHP并不仅限于Web!)。
就exit
、exit()
和exit(0)
之间的区别而言,实际上没有区别。前两者之间肯定没有区别,因为exit
在技术上是语言结构,而不是函数,因此可以带括号或不带括号调用,就像echo
一样。返回代码0
表示“此程序成功运行/无错误”,虽然我不知道如果您不传递参数会发生什么事情,但PHP.net说没有参数的exit
表示成功,所以我敢打赌它会返回0
,尽管PHP.net没有显示参数的默认值。
exit(0)
表示成功退出,exit(1)
表示失败退出。 - Yousha Aleayoubexit
(或die
)时实际的退出代码是什么。例如,看到常见的die(-1)
习惯用法以及大量的die("Poo!...")
调用后,人们可能并不那么确定,而且:猜测应该属于其他职业......所以,为了记录:它是0。这也意味着后者die("error!")
在CLI脚本中很可能是一个错误!:-o - Sz.die($arg)
应该用于异常或意外终止。而exit($arg)
应该用于进程的正常(预期/受控)结束,例如在for
、while
或switch
结构中使用break;
来表示一个有限的结束。if { } else { }
结构来控制巨大进程的不同分支或输出缓冲,以避免使用"exit"。die($arg)
,如:
$db = mysql_connect([$args]) or die ($error);
...die();
仅仅是exit();
的同义词,并且在功能上完全相同。
标准方法是使用退出代码零来表示成功,而使用其他任何代码表示错误情况。
if ($_GET["play"] != ""){
// Some job
exit;
}
/* Huge amount of data*/
if ($_GET["play"] != ""){
// Some job
}
/* Huge amount of data*/
/* Huge amount of data*/
if ($_GET["play"] != ""){
// Some job
}
if ($_GET["play"] != ""){
// Some job
goto END;
}
/* Huge amount of data*/
END: // this a marker, so it ends with colon, not semicolon
是的!有时候使用GOTO被认为是最好的选择!
die()通常用于以错误输出的方式终止脚本:
die("There was a fatal error");
相比之下,exit通常用作成功退出(至少在我的编码中是这样)
PHP手册说这两个函数是相同的。
die
与exit
完全等效。
来自手册:
如果状态是一个整数,那么该值将被用作退出状态。
只有在您有某种基于退出状态执行操作的包装器时,这才有用。除非您有特定的需要向外界报告退出代码,否则只需使用exit;
。
return
有不同的含义。 - Explosion Pills