assert()与assert_options()用法说明

如题,我只是在这里说一下我自己的理解,解释不是特别官方。

希望能帮助大家理解。
注意:
assert()失败就相当于,assert()检测到false.


bool assert(mixed $assertion)
assert()是检查$assertion是否返回false。$assertion一般是一个表达式或函数。assert()返回值如果检测了false则返回false,否则返回true。


与assert()配套使用的还有assert_options()这个函数。
mixed assert_options(int $what [,mixed $value])
assert_options()用于控制assert()执行时一些选项。

参数:
$what值如下:

OptionPHP.ini中对应的选项默认值     Description
ASSERT_ACTIVE assert.active 1 允许使用assert().
ASSERT_WARNING assert.warning 1 在assert失败时输出warning警告信息。
ASSERT_BAIL assert.bail 0 assert失败后终止代码执行。
ASSERT_QUIET_EVAL assert.quiet_eval 0 在assert代码运行中禁止使用error_reporting。
ASSERT_CALLBACK assert.callback (NULL) assert()执行失败,吊用指定内容。

 

(一)
function test_assert($parameter)
{
   assert(is_int($parameter));
 
}
test_assert(1.2);

 

很简单的代码,is_int($parameter)返回值是false,assert()检测到false(即assert失败)并返回一个warning提示,这个提示不属于系统错误,是assert()自己自动加上的一个提示,指明assert()检测到false值的代码所在位置。如图:

assert()与assert_options()用法说明

如果我给assert()加上几个参数,来控制让它在检测到false时,不提示warning提示这时可以用assert_optiong(ASSERT_WARNTNG,0);如下:
<?php
assert_options(ASSERT_WARNING,0);
function test_assert($parameter)
{
   assert(is_int($parameter));
   echo 'assert is ok';
 
}
test_assert(1.2);

?>
运行结果是只显示:assert is ok

 

(二)
<?php
assert_options(ASSERT_WARNING, 0);
assert_options(ASSERT_ACTIVE,   1);//允许使用assert()函数

,默认是true.
assert_options(ASSERT_BAIL,     1);
function test_assert($parameter)
{
   echo 'strat<br/>';
   assert(is_int($parameter));
   echo 'assert is ok';
 
}
test_assert(1.2);

?>
运行结果是:strat

后面并未输出assert is ok。这是ASSERT_BAIL的作用。当assert()返回false时,终止执行代码。

 


(三)
<?php
error_reporting(E_ALL);
assert_options(ASSERT_WARNING, 0);
assert_options(ASSERT_ACTIVE,   1);
assert_options(ASSERT_BAIL,     1);
//assert_options(ASSERT_CALLBACK, 'assert_failure');
//assert_options(ASSERT_QUIET_EVAL, 1);
function assert_failure()
{
    echo 'Assert failed';
}
function test_assert($parameter)
{
 echo 'strat<br/>';
   assert('mysql_query("")');
   echo 'assert is ok';
 
}
test_assert(4);
?>
运行结果如下图:

assert()与assert_options()用法说明


很明示这里的mysql_query("")是不正确的,一定会出现一些系统提示错误(error_reporting)。但如果你想关闭这些信息,就可以使用ASSERT_QUIET_EVAL,增加语句:assert_options(ASSERT_QUIET_EVAL, 1);
最后说明一下,

assert_options(ASSERT_CALLBACK, 'assert_failure');
它的作用就是把当assert()检测到false时,启用某个函数。
在上例中加上assert_options(ASSERT_CALLBACK, 'assert_failure');
再运行结果如下图:

assert()与assert_options()用法说明

 


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值