PHP 中的断言
阅读 104 作者 阿林

asert 在7.3版本开始在命名空间中使用无效

// PHP 7
assert ( mixed $assertion [, Throwable $exception ] ) : bool

// 代码
assert(true == false);

// 运行结果:
Warning: assert(): assert(true == false) failed in E:\work\index.php on line 4

自定义回调函数

// 设置回调函数
assert_options(ASSERT_CALLBACK, 'myAssert');

// 函数
function myAssert($file, $line, $code, $desc)
{
    echo "Assertion Failed: File {$file} Line {$line} Code {$code} Desc {$desc} ";
}

// 执行
assert(true == false, '不可能相等');

// 结果
Assertion Failed: File E:\work\index.php Line 13 Code Desc 不可能相等 

设置产生异常

// 
assert(true == false, new AssertionError('异常信息'));

// 结果
Warning: assert(): AssertionError: 异常信息 in E:\work\index.php:4 Stack trace: #0 {main} failed in E:\work\index.php on line 4

// 测试

function func($data) {
    // 一些逻辑
    return true;
}

assert(func(1) === 5, 'func() 测试不通过:');
assert(is_string(func(1)), 'func() 测试不通过:');

// 结果
Warning: assert(): func() 测试不通过: failed in E:\work\index.php on line 10

Warning: assert(): func() 测试不通过: failed in E:\work\index.php on line 11

相关参数

php官网assert_options文档

[编辑于 2019/07/11 16:31]