'死'和'退出'之间的区别

Yog*_*har 15 php exit die

可能重复:
PHP中的die()和exit()有什么不同?

die和它的区别完全混淆了exit.

大多数程序员都die这样使用.

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');  //don't see mysql_* problem it is just example
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
Run Code Online (Sandbox Code Playgroud)

并使用exit这样的

$filename = '/path/to/data-file';
$file = fopen($filename, 'r')
   or exit("unable to open file ($filename)");
Run Code Online (Sandbox Code Playgroud)

根据那里的功能,我认为没有任何区别,因为它们都会终止脚本的执行.

我的问题是

1)在这些例子中,我可以与出口互换模具,反之亦然吗?

2)这些也有区别.

干杯...

Ada*_*her 17

Die说,等同于退出.所以是的,你可以互换它们.

  • `die`别名也可以创建有趣的代码行,例如`compliance()或die();` (8认同)
  • @YogeshSuthar PHP充满了这样的别名.其中一些是有计划的,但我认为其中大部分都不是.它随着时间的推移而不断变化和变化,有些人的想法比其他人更糟糕. (2认同)
  • @darvids0n`enter_the_dragon()或exit();`;) (2认同)

Pra*_*nth 13

使用命令行时,

die("Error");
Run Code Online (Sandbox Code Playgroud)

将打印到"错误" STDOUT并退出并显示错误代码0.

如果要退出并显示错误代码1,则必须:

fwrite(STDERR, "Error");
exit(1);
Run Code Online (Sandbox Code Playgroud)

从命令行或shell脚本执行php脚本时,它可能很有用,并且您希望查看脚本是否以非零退出代码终止.

这是我能想到的一个区别.

PS上面的信息来自php.net/exit

  • 它仍然没有两个功能之间的区别.只是*通常*人们使用带有消息的`die`和带退出代码的`exit`. (2认同)

drs*_*iya 9

die()和exit()函数之间没有区别.它们都是相同的并且工作原理相同.

再问题是为什么php保持这两个功能,如果它们是相同的.这两个函数都是彼此函数的别名.

由于API和保持向后兼容性,两个功能都保持不变.

这是另一个例子:

is_int()和is_integer()也是一样的.

PHP中有很多函数可以使用多个名称调用.在某些情况下,多个名称中没有首选名称,例如is_int()和is_integer()同样好.但是,由于API清理或其他原因,有些函数会更改名称,旧名称仅作为别名保留以便向后兼容.使用这些别名通常是一个坏主意,因为它们可能会被淘汰或重命名,这将导致不可移植的脚本.提供此列表是为了帮助那些想要将旧脚本升级为更新语法的用户.

完整的别名功能列表,您可以在以下URL中找到:

http://php.net/manual/en/aliases.php

愿这会帮到你:)


Jus*_*ohn 6

dieexit函数的别名.

php中有许多函数别名,因为语言的演变,演变和克服它 - http://www.php.net/manual/en/aliases.php.


Max*_*nov 5

die将参数输出到STDOUT,而不是STDERR(grep或2> / dev / null将帮助您测试),将shell退出代码返回为0,但是exit可以返回其他代码,以便在PHP中定义完全模拟:

function mydie($str){
  echo $str.PHP_EOL;
  exit(0);
}
Run Code Online (Sandbox Code Playgroud)