如题,我只是在这里说一下我自己的理解,解释不是特别官方。
希望能帮助大家理解。
注意:
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)
{
}
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)
{
}
test_assert(1.2);
?>
运行结果是只显示:assert is ok
(二)
<?php
assert_options(ASSERT_WARNING,
assert_options(ASSERT_ACTIVE,
,默认是true.
assert_options(ASSERT_BAIL,
function test_assert($parameter)
{
}
test_assert(1.2);
?>
运行结果是:strat
后面并未输出assert is ok。这是ASSERT_BAIL的作用。当assert()返回false时,终止执行代码。
(三)
<?php
error_reporting(E_ALL);
assert_options(ASSERT_WARNING,
assert_options(ASSERT_ACTIVE,
assert_options(ASSERT_BAIL,
//assert_options(ASSERT_CALLBACK, 'assert_failure');
//assert_options(ASSERT_QUIET_EVAL, 1);
function assert_failure()
{
}
function test_assert($parameter)
{
}
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');
再运行结果如下图: