在PHP脚本的结尾是否需要使用die()或exit()函数?

6
在一个php脚本中,我有一些测试,脚本结束后是html页面。
当一个测试失败时,我调用die("Test 1 failed"); 如果没有测试失败,php脚本会到达结尾?>然后加载php脚本后的html代码。
这是一个好的流程吗?还是我需要在php脚本结束前写入die()或exit()?

1
不会。当脚本到达结尾时,它无论如何都会退出。 - George
请阅读此链接:https://dev59.com/knI-5IYBdhLWcg3wj5FG?rq=1 - Karthik
1
只有在某人可能对脚本的返回代码感兴趣时,它才是有用的,例如当您在shell环境中使用它时。对于大多数用途,特别是在Web服务器上生成内容时,根据下面的答案,这是不必要的。 - CompuChip
9个回答

4
不需要编写此代码,“这”也不是最佳实践。如果脚本没有致命错误并到达结束,它将退出。
如果这对您来说意味着“测试”,那么您是错误的。应该使用单元测试进行测试。对于php,有phpunit。试试看,这是测试代码的正确方法。
编辑:正如CompuChip在评论中所说,exit的唯一有用用例是当您编写基于php的shell脚本应返回错误代码时。请参阅exit()函数文档的参数部分

对于测试,我的意思是将用户注册到数据库中。如果出现错误,那就是测试失败了。 - newtphp
这可以并且应该通过单元测试进行测试。你所谓的“测试”是调试,而不是真正的测试。另外,你的脚本应该传递一个合适的错误信息给用户,而不是仅仅“杀死”脚本。 - floriank

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

0

不! 不建议使用它

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


请解释为什么不建议这样做,并尽可能提供相关来源。 - Karl-Johan Sjögren

0

不,你不需要那个,但是当编写控制台 PHP 脚本时,你可能想要通过例如 Bash 检查脚本是否正确完成了所有操作。这时你可以使用 exit() 或 die() 函数。


0

在 PHP 脚本的结尾需要使用 die() 或 exit() 函数吗?

不需要,PHP 会自动结束脚本。如果脚本是一个被包含的文件(从另一个文件调用),那么它将结束包含文件中的脚本,然后继续执行原始文件中任何代码(如果有的话)。

因此,您可以在任何需要的地方放置 die() 或 exit()。

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

print_r($array);
exit();

对于其他代码测试,我有时只是回显“Section A worked”等内容,例如在if / else中。如果我想知道代码的特定部分是否正在工作或是否满足某些条件(基本上,它允许您跟踪PHP本身在代码中的位置)。
话虽如此,在生产代码中不要使用die()或exit()。您应该使用更友好和受控的消息设置。出于安全原因和视觉效果,因为您可能会向他们提供一些信息,例如“ERROR Failed to load SomethingSecret”。而且当您的页面仅加载了一半,然后输出屏幕上的错误消息时,这看起来并不美观,这很可能对最终用户毫无意义。
阅读以下内容:
PHP错误处理:die() Vs trigger_error() Vs throw Exception

-1

在脚本的结尾不需要放置die或exit。但是你可以使用exit来以特定的退出代码(默认为0)终止你的脚本。

E.g

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

http://php.net/exit


-1

不必在脚本结尾使用这些函数,因为它们已经存在于脚本末尾。


-1

-1

不需要调用die()或exit(0),如果您有其他要运行的代码,比如HTML代码


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接