您的位置:首页 > 运维架构

assert()与assert_options()用法说明

2014-03-14 23:52 337 查看
如题,我只是在这里说一下我自己的理解,解释不是特别官方。

希望能帮助大家理解。

注意:

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_ACTIVEassert.active1允许使用assert().
ASSERT_WARNINGassert.warning1在assert失败时输出warning警告信息。
ASSERT_BAILassert.bail0assert失败后终止代码执行。
ASSERT_QUIET_EVALassert.quiet_eval0在assert代码运行中禁止使用error_reporting。
ASSERT_CALLBACKassert.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()加上几个参数,来控制让它在检测到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);

?>

运行结果如下图:





很明示这里的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');

再运行结果如下图:





 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: