PHP die与exit的区别

最近听见有人说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主要用于想要程序终止(主观)。

 

posted @ 2017-07-24 18:09  指间&流年  阅读(378)  评论(0编辑  收藏  举报