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值如下:
(一)
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');
再运行结果如下图:
希望能帮助大家理解。
注意:
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值如下:
Option | PHP.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()加上几个参数,来控制让它在检测到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');
再运行结果如下图:
相关文章推荐
- JUnit3 结合一个除法的单元测试说明Assert.fail()的用法
- android BitmapFactory.Options.inSampleSize用法说明
- VC CString::用法整理+ASSERT用法说明
- jquery.ajax完整说明 $.ajax(options)的用法(转载)
- JUnit3 结合一个除法的单元测试说明Assert.fail()的用法
- 【MFC学习笔记3】ASSERT()函数用法,CFileFind Class 说明。
- assert()函数用法总结
- CSS滤镜说明和用法
- assert用法总结
- extern用法说明
- SpringMVC实现依赖注入的几个常用注解的用法解释和示例说明
- Linux下 fcntl 函数用法说明
- setsockopt()用法(参数详细说明)
- assert()函数用法总结
- document.execCommand() 用法说明
- Linux下 fcntl 函数用法说明
- LinqPad介绍,下载,用法说明
- 断言(ASSERT)的用法
- keytool用法及说明
- 以案例说明SharedPreferences的基本用法