PHP:exit()/ die()和return之间有什么区别;在" self"和包含文件?

时间:2012-12-20 08:53:57

标签: php return exit die

我还在学习PHP学习方法。终止脚本时,exit(); / die();return;之间的区别是什么?:

  1. 在同一个文件(单个脚本文件)中
  2. 在包含的孩子中
  3. 在include
  4. 的父级内

3 个答案:

答案 0 :(得分:8)

返回值返回。这可以是任何东西,也可用于功能。

What are the differences in die() and exit() in PHP?

http://php.net/manual/en/function.return.php

答案 1 :(得分:2)

返回值返回一个值(char,int,string,array ...)并退出函数。

来自php手册:

  

注意:此语言构造等同于die()。

退出之间仍有区别:

  

使用die()你可以发一个字符串:die("发生错误");

使用exit()

的结果相同
<?php
    echo("An error occurred <br>");
    exit(0);
?>

或者如果您是cli或unix shell:

在命令行中使用PHP,死(&#34;发生错误&#34;)只是打印&#34;发生错误&#34;到STDOUT并以正常退出代码0终止程序。

<?php
    fwrite(STDERR, "An error occurred \n");
    exit(0); //
?>

答案 2 :(得分:2)

dieexitequivalent functions

  

终止脚本的执行。

return

  

将程序控制返回给调用模块。执行恢复   调用模块调用后的语句。

     

如果在函数内调用,则立即返回语句   结束当前函数的执行,并将其参数作为   函数调用的值。 return也结束了执行   eval()语句或脚本文件。

     

如果从全局范围调用,则执行当前脚本   文件已结束。如果包含或需要当前脚本文件,   然后将控制权传递回调用文件。而且,如果   包含当前脚本文件,然后返回给予的值   作为包含调用的值返回。如果从中调用return   在主脚本文件中,脚本执行结束。如果   当前脚本文件由auto_prepend_file或   php.ini中的auto_append_file配置选项,然后是该脚本   文件的执行结束。

die vs exit

PHP中die()exit()之间的区别在于来源

PHP手册

die的PHP手册:

  

此语言构造等同于exit()

exit的PHP手册:

  

注意:此语言构造等同于die()

List of Function Aliases的PHP手册:

  

die是主函数exit()

的别名

其他语言不同

die()exit() 与其他语言不同,但在PHP中它们完全相同。

来自Yet another PHP rant

  

......作为一名C和Perl编码员,我准备回答:“为什么,退出()只是保释   用数字退出状态关闭程序,而die()打印出来   向stderr发送错误消息并以EXIT_FAILURE状态退出。“但是接着   我记得我们处于混乱的PHP语法之中。

     

在PHP中,exit()和die()是相同的。

     

设计师显然认为“嗯,让我们借exit() from C。而Perl   如果我们也采用die() as is from Perl,人们可能会喜欢它。   哎呀!我们现在有两个退出功能!让我们两个都做到   可以将字符串或整数作为参数并使它们相同!“

     

最终的结果是,这并没有让事情变得“更容易”,   更令人困惑的是。 C和Perl编码器将继续使用exit()来   只抛出一个整数退出值,并且die()抛出一条错误信息   并以失败退出。新手和PHP-as-a-first-language people   可能会想“嗯,两个退出功能,哪一个应该我   使用?“手册没有解释为什么有exit()和die()。

     

一般来说,PHP有很多像这样的奇怪冗余 - 它试图   对来自不同语言背景的人友好,   但这样做会造成令人困惑的冗余。