PHP中终止程序输出的exit和die

php 专栏收录该内容
32 篇文章 0 订阅

今天我们来看看如何终止程序,往往在项目开发中,你可能需要排查错误,这个时候,不希望后面的内容输出影响显示,可以用exit来进行程序的终止,也有die可以使用,而die在php官网上说语法结构等同于exit。接下来就跟随我看看,这个怎么用。

【1】exit

①作用:输出一个消息并且退出当前脚本

语法:exit ([ string $status ] ) : void   或者  exit ( int $status ) : void

返回值:没有返回值。

如果 status 是一个字符串,在退出之前该函数会打印 status 。

如果 status 是一个 integer,该值会作为退出状态码,并且不会被打印输出。 (退出状态码应该在范围0至254,不应使用被PHP保留的退出状态码255。状态码0用于成功中止程序)

exit;//直接停止程序运行,不输出东西。
exit();//exit 是个语法结构,如果没有 status 参数要传入,可以省略圆括号。
#参数如果是字符串,就会在退出程序前打印参数
exit('Quit');//打印Quit然后退出
exit('1');//打印1然后退出
#参数如果是整型,就会直接退出程序
exit(0);//正常运行程序并退出程序
exit(1);//非正常运行导致退出程序

②exit挡不住的代码

经过register_shutdown_function注册的函数与析构函数都会被执行,而且是先执行注册过的函数   后执行析构函数。

register_shutdown_function()是php内置的函数, 注册一个会在php中止时执行的函数,注册一个 callback ,它会在脚本执行完成或者 exit 后被调用。

 

class Foo
{
    public function __destruct()
    {
        echo 'I am Destruct: ' . __METHOD__ ,'<br>';
    }
}
function foo()
{
    echo 'I am function '.__FUNCTION__,'<br>';
}
$foo = new Foo();
register_shutdown_function('foo');
exit();
echo 'ENDING';

结果:(看来是终止的时候先执行注册函数,在执行析构函数)

I am function foo
I am Destruct: Foo::__destruct

【2】die

作用:die语法结构等同于 exit()。输出一个消息并且退出当前脚本

die;
die();//实际上如果没有参数的话,不带括号更好。
#如果参数是字符串
die('Quit');//打印Quit然后退出
#如果参数是integer
die(0);
#一般用于连接或者函数返回错误时候,执行die输出信息后退出程序
mysqli_connect('localhost','root','root') or die('Mysql connect is fail');

【3】exit和die的区别

①exit 和 die 都是中止脚本执行语言结构。在php官网上,这两个被分到杂项函数,我理解的,可能是这两个可以有函数的用法,也可以不加圆括号作为函数使用。

②exit或者die不加参数的话,最好不带括号。直接使用。

exit(status)或者die(status)使用参数

如果 status 是一个字符串,在退出之前该函数会打印 status 。

如果 status 是一个 integer,该值会作为退出状态码,并且不会被打印输出。 (退出状态码应该在范围0至254,不应使用被PHP保留的退出状态码255。状态码0用于成功中止程序)

③exit和die这两者在实际代码过程中可以存在一定的选择差别.

例如这样:涉及到提前终止程序/脚本执行的情况,使用exit();

当程序出错或者说函数返回失败,为了停止执行并显示提示信息时,使用die()。

【4】小例题

function a(){
    b();
    echo "a?";
}

function b(){
    echo "b";
    exit;
}
a();//输出b
#这个里面exit作为终止程序使用,不提供信息
function a(){
    b();
    echo "a?";
}
function b(){
    die("b");
}
a();//输出b
#这里利用die终止程序并且返回b

 

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值