php脚本末尾所需的die()或exit()函数


Is the die() or exit() function needed in the end of a php script?

在php脚本中,我有一些测试,在脚本之后是html页面。

当测试失败时,我称之为die("测试1失败");如果没有测试失败,php脚本将结束?>然后在php脚本之后加载html代码。

这是一个好的程序吗?或者我需要在php脚本结束之前写die()或exit()?

不,您不必写这些,这不是最佳实践。如果脚本在没有致命错误的情况下结束,它将退出。

如果这对你来说意味着"测试",那么你错了。测试应该使用单元测试来完成。对于php,有phpunit。试试看,这是测试代码的正确方法。

编辑:正如CompuChip在一条评论中所说,退出的唯一有用用例是当您正在编写一个基于php的shell脚本时,该脚本应该返回错误代码。有关exit()函数,请参阅文档中的参数部分。

除非在非常特殊的情况下,否则您不应该在生产PHP脚本中使用die()exit。相反,重新使用代码路径,只需向用户显示错误消息,而不是提前退出脚本。

不需要,但在编写控制台PHP脚本时,您可能需要检查例如Bash脚本是否以正确的方式完成了所有内容。这就是使用exit()或die()的时候

php脚本末尾是否需要die()或exit()函数?

不,PHP将结束脚本本身。如果脚本是包含的文件(从另一个文件调用),则它将结束包含文件中的脚本,然后在包含的位置(如果有任何代码)之后继续使用原始文件中的任何代码。

所以你把die()exit()放在你想要或需要的地方

对于测试,请将它放在测试的每个代码块之后。我在测试的某些部分使用它们,如果我只是想让PHP显示一些东西,然后停止,比如打印出一个数组以确保它被正确构建等等。
例如:

print_r($array);
exit();

对于其他代码测试,我有时只是回显"Section A worked"等,例如在if/else中。如果我想知道代码的某个特定部分是否有效,或者是否满足某些标准(基本上,它可以让你跟踪PHP本身在代码中的位置)。

总之,不要在生产代码中使用die()exit()。您应该使用更友好、更可控的消息设置。出于安全原因和视觉原因,因为您可能会向他们提供一些信息,如"ERROR Failed to loadSomethingSecret"。此外,当页面只加载了一半,然后在屏幕上显示错误消息,这对最终用户来说可能毫无意义时,它看起来也不好看。

请阅读以下内容:
PHP错误处理:die()Vs trigger_Error()Vsthrow Exception

否!不建议使用

使用trigger_errorerror_log将测试记录在error.log中。然后进行检查。

不,您不必在脚本末尾使用这些函数,因为它无论如何都存在于脚本末尾。

无需在scipt的末尾放置die或exit。但是,您可以使用exit终止脚本,并使用特定的退出代码(默认情况下为0)。

E.g

$ php -r "/* does nothing */;"
$ echo $?
0
$ php -r "exit(123);"
$ echo $?
123

http://php.net/exit

来自文档:

一旦执行脚本结束,除非通过显式调用提前关闭mysql_close()。

  • https://secure.php.net/function.mysql-connect

不,如果有其他代码要运行,则不需要调用die()或退出(0,就像HTML代码