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

php
2022-08-30 08:10:24

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

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


答案 1

这些都是相同的。我很确定它只是一个直截了当的别名,但即使它不是,它仍然以相同的方式起作用。die()exit()

当为其中一个函数指定字符串参数时,它会在终止进程之前打印出字符串。当它遇到低于 255 的整数时,该整数被视为进程的返回代码,该代码被传递回调用 PHP 脚本的进程。这在编写命令行应用程序时特别有用(PHP不是仅限Web的!

至于 、 和 之间的区别,实际上没有。前两者之间绝对没有区别,因为从技术上讲是一种语言结构,而不是函数,因此可以带或不带括号来调用它,就像 .返回代码的意思是“此程序成功运行/没有错误”,虽然我不知道当你不传递参数时究竟会发生什么,PHP.net 说无参数表示成功,所以我敢打赌它会返回,尽管再次 PHP.net 不显示参数的默认值。exitexit()exit(0)exitecho0exit0


答案 2

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

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

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

  • 字符串值。这将在退出发生时显示给浏览器。

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

通过这种方式,您可以更灵活地执行自动错误日志记录之类的操作。此外,如果您使用 PHP 实现 JSON API,则此异常处理程序可以转回有效的错误指示 JSON 代码段。


推荐