我还在学习 PHP。exit()
终止脚本时,die();
和?之间有什么区别return;
:
- 在同一个文件中(单个脚本文件)
- 在 include 的子级内
- 在 include 的父级中
die
和exit
(等效函数)终止脚本的执行。
return
将程序控制权返回给调用模块。在被调用模块调用之后的语句处继续执行。
如果从函数内部调用,return 语句会立即结束当前函数的执行,并将其参数作为函数调用的值返回。return 还结束 eval() 语句或脚本文件的执行。
如果从全局范围调用,则结束当前脚本文件的执行。如果包含或需要当前脚本文件,则将控制权传递回调用文件。此外,如果包含当前脚本文件,则返回的值将作为包含调用的值返回。如果从主脚本文件中调用 return,则脚本执行结束。如果当前脚本文件由 php.ini 中的 auto_prepend_file 或 auto_append_file 配置选项命名,则该脚本文件的执行结束。
die
对比exit
die()
PHP和exit()
PHP之间的区别在于它们的起源。
PHP 手册die
:
这种语言结构等价于
exit()
.
PHP 手册exit
:
注意:此语言结构等价于
die()
.
函数别名列表的PHP 手册:
die()
并且在其他语言中有所不同,exit()
但在 PHP 中它们是相同的。
来自另一个 PHP 咆哮:
...作为 C 和 Perl 编码器,我已经准备好回答:“为什么,exit() 只是以数字退出状态退出程序,而 die() 将错误消息打印到 stderr 并以 EXIT_FAILURE 状态退出。 " 但后来我记得我们正处于 PHP 的混乱语法领域。
在 PHP 中,exit() 和 die() 是相同的。
设计者显然认为“嗯,让我们从 C 中借用exit()。如果我们也像从 Perl 中一样使用 die(), Perl 人可能会喜欢它。哎呀!我们现在有两个退出函数!让我们让它两者兼而有之可以将字符串或整数作为参数并使它们相同!”
最终结果是,这并没有真正让事情变得“更容易”,只是更令人困惑。C 和 Perl 编码器将继续使用 exit() 仅抛出一个整数退出值,并使用 die() 抛出错误消息并以失败退出。新手和 PHP 作为第一语言的人可能会想知道“嗯,两个退出函数,我应该使用哪个?” 手册没有解释为什么会有 exit() 和 die()。
In general, PHP has a lot of weird redundancy like this - it tries to be friendly to people who come from different language backgrounds, but while doing so, it creates confusing redundancy.
Return 是返回一个值 (char,int,string,array...) 并退出函数。
来自 php 手册:
注意:这个语言结构等价于 die()。
但是die和exit之间仍然存在区别:
使用 die() 你可以发布一个字符串: die("An error occurred");
使用 exit() 的结果相同
<?php
echo("An error occurred <br>");
exit(0);
?>
或者,如果您是 cli 或 unix shell:
在命令行上使用 PHP,die("An error occurred") 简单地将“An error occurred”打印到 STDOUT 并以正常退出代码 0 终止程序。
<?php
fwrite(STDERR, "An error occurred \n");
exit(0); //
?>