最近听见有人说die和exit区别,bula~bula。决心一探究竟。
翻了翻PHP 5.6的源码(源码的位置为zend目录下zend_language_scanner.l大约是1014~1020行)
1 <ST_IN_SCRIPTING>"exit" { 2 return T_EXIT; 3 } 4 5 <ST_IN_SCRIPTING>"die" { 6 return T_EXIT; 7 }
由源码可以看得出来,zend引擎在解析die和exit都解析成了T_EXIT,另外插一句die和exit都不是函数,都只是语义结构。
所以二者的实现,完全相同。
为什么要开放两个实现一样函数呢?
存在即是合理。
原因是:二者虽然在实现相同,但是具有不同的名字,这就意味着,在平常的编程中,可以使我们的语义化更强。
代码1:
<?php $pdo = new PDO("mysql:host=localhost;dbname=db_demo","root","") or die('error') ;
代码2:
<?php function getData(){ return []; } $data = getData(); if(empty($data)){ exit('data is null!'); }
从以上两个代码片段来总结:
die主要用于不可预测的、意外的程序终止(非主观)。
exit主要用于想要程序终止(主观)。