说一下PHP中die()和exit()区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了说一下PHP中die()和exit()区别相关的知识,希望对你有一定的参考价值。
请高手说一下php中die()和exit()区别。
1、用法习惯不同,当传递给exit和die函数的值为0时,意味着提前终止脚本的执行,通常用exit()这个名字。
2、名字不同,其实PHP手册已经说过“die — Equivalent to exit().This language construct is equivalent to exit(). ”两者只是别名关系,除此之外完全一样。
3、源码的处理方式不同,无论是别名函数还是别名语言结构,从实际效果角度讲,都是一样的,但是源码的处理方式还是有一定的差异。
扩展资料:
die()和exit()差异实例:
zend_language_parser.c中,定义了一个宏
#define T_EXIT 300
还定义了一个enum,里面也有
enum yytokentype
…
T_EXIT = 300,
….
这里告诉我们,T_EXIT这个token,它的code是300。
再看zend_language_scanner.l,其中有这么几行代码。
<ST_IN_SCRIPTING>”exit”
return T_EXIT;
<ST_IN_SCRIPTING>”die”
return T_EXIT;
很明显,php做词法分析时,无论遇到exit还是die,都会返回T_EXIT这个token。从这里酒可以证明,die和exit,再php内部处理是完全一样的。
也可以用下列php代码来确定:
<?php
var_dump(token_get_all(“<?php die;exit;?>”));
返回的结果中die和exit对应的token code,都是300。
参考资料:
PHP exit() 函数-w3school
PHP die() 函数-w3school
参考技术APHP手册:die()Equivalent to exit()。
说明:die()和exit()都是中止脚本执行函数;其实exit和die这两个名字指向的是同一个函数,die()是exit()函数的别名。该函数只接受一个参数,可以是一个程序返回的数值或是一个字符串,也可以不输入参数,结果没有返回值。
参考:虽然两者相同,但通常使用中也有细微的选择性。例如:
当传递给exit和die函数的值为0时,意味着提前终止脚本的执行,通常用exit()这个名字。
echo "1111";exit(0);
当程序出错时,可以给它传递一个字符串,它会原样输出在系统终端上,通常使用die()这个名字。
$fp=fopen("./readme.txt","r") or die("不能打开该文件"); 参考技术B PHP中die()和exit()是完全相同,没有任何区别,die是exit的同义词。 参考技术C 一个是完全卸载出内存,一个是退出但不卸载出内存…比划下:
你老婆小生你气,让你滚出去,你就从卧室跑到客厅但是不出家门。
而你老婆要是让你死滚,你可能就要被轰出家门了…
前者之后可能还会被重新调入卧室,后者短时间内用不着了…哈哈…本回答被提问者采纳 参考技术D 那个满意回答错了。php源码:
zend_language_scanner.l
<ST_IN_SCRIPTING>"exit"
return T_EXIT;
<ST_IN_SCRIPTING>"die"
return T_EXIT;
zend_language_parser.c
#define T_EXIT 300
这两个都是语言结构非函数,这两个语句都会返回T_EXIT这个token,对应的token code都是300。可以用下面php代码检验:
var_dump(token_get_all("<?php die;exit;?>"));
所以这俩只是别名关系,无任何其他区别
以上是关于说一下PHP中die()和exit()区别的主要内容,如果未能解决你的问题,请参考以下文章