今天我们来看看如何终止程序,往往在项目开发中,你可能需要排查错误,这个时候,不希望后面的内容输出影响显示,可以用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