PHP中的exit和die

发布时间 2023-07-09 03:43:56作者: 有欲

PHP中的exit和die

环境:

PHP 8.2.4 (cli) (built: Jul 5 2023 12:08:25) (NTS DEBUG)

  1. 根据官方文档,die等同于exit

    This language construct is equivalent to exit().
    语法结构等同于 exit()。

    请注意,这里用的不是“别名”这个说法,而是直接用了等同。

  2. exit和die是语法结构而不是函数,所以所以无参数时不需要括号,但使用括号不引发错误。
    // 已下语句都是合法的。
    exit;
    exit();
    exit('终止');
    exit(1);
    exit(257);
    
  3. 退出状态码

    可以在php file.php之后使用echo $?命令打印退出状态码。

    1. 无参数使用exit语句,无输出,退出状态码为0;
    2. 当exit参数为字符串时,打印输出字符串,退出状态码为0;
    3. 当exit参数为0--255整数时,参数不被打印输出,会做为退出状态码;
    4. 当参数为整数且超出0--255范围时,取低8位无符号数值作为退出状态码;
      exit(-1);   //echo $?: 255
      exit(257);  // echo $?: 1
      
    5. 当参数为浮点数,会把参数做为字符串输出,退出状态码为0;
    6. 当参数为对象、数组或其他数据结构时,我去!@#$%^&*();
    7. 一般情况不建议使用255做为exit参数,这是php保留的退出状态码;
    8. 普通情况下退出状态码0表示成功终止程序。
  4. 抄过来的一段代码,做了一点点微小的修改,供大家参考。

    参考:从源码看php中的别名

     $arrTokens = token_get_all('<?php exit(34); die ?>');
     foreach ($arrTokens as $token) {
         if (gettype($token) != 'array') {
             echo $token, PHP_EOL;
         } else {
             echo "Line {$token[2]}: ", token_name($token[0]), " ('{$token[1]}')", PHP_EOL;
         }
     }