PHP:exit()、die() 和 return 有什么区别;在“自我”内并包含文件?

问题描述 投票:0回答:3

我仍然处于 PHP 学习的停滞状态。终止脚本时,

exit()
die();
return;
有什么区别?:

  1. 在同一文件内(单个脚本文件)
  2. 在 include 的子级中
  3. 在包含的父级中
php return exit die
3个回答
9
投票

Return 返回一个值。这可以是任何东西,并且用于函数。

PHP 中的 die() 和 exit() 有什么区别?

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


6
投票

die
exit
等效功能

终止脚本的执行。

return

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

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

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


die
vs
exit

PHP 中

die()
exit()
之间的区别在于它们的起源


PHP 手册

PHP 手册

die
:

此语言构造相当于

exit()

PHP 手册

exit
:

注意:此语言构造相当于

die()

PHP 手册函数别名列表:

die
是master函数的别名
exit()


其他语言的不同

die()
exit()
在其他语言中是不同的,但在 PHP 中它们是相同的。

来自

又一个 PHP 咆哮

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

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

设计者显然认为“嗯,让我们借用 C 的

exit() 。还有 Perl 如果我们也采用 Perl 中的 die(),人们可能会喜欢它。 哎呀!我们现在有两个退出函数!让我们让他们俩都 可以采用字符串或整数作为参数并使它们相同!” 最终的结果是,这并没有真正让事情变得“更容易”, 只是更令人困惑。 C 和 Perl 程序员将继续使用 exit() 来 仅抛出一个整数退出值,并用 die() 抛出错误消息 并失败退出。新手和 PHP 作为第一语言的人 可能会想知道“嗯,两个退出函数,我应该选择哪一个 使用?”手册没有解释为什么有 exit() 和 die()。

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


2
投票

来自 php 手册:

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

但是
die

exit之间仍然有区别:

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

与使用 exit() 的结果相同

<?php echo("An error occurred <br>"); exit(0); ?>

或者如果您是 cli 或 unix shell :

在命令行上使用 PHP,die(“发生错误”) 只需将“发生错误”打印到 STDOUT 并以正常退出代码 0 终止程序。

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

© www.soinside.com 2019 - 2024. All rights reserved.