【modernPHP专题(11)】断言ASSERT

栏目: PHP · 发布时间: 6年前

内容简介:编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新起用断言。使用断言可以创建更稳定,品质更好且不易于出错的代码。单元测试必须使用断言!

简述

编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。 程序员断言在程序中的某个特定点该的表达式值为真。如果该表达式为假,就中断操作

可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新起用断言。

使用断言可以创建更稳定,品质更好且不易于出错的代码。单元测试必须使用断言!

PHP断言

# PHP5
bool assert ( mixed $assertion [, string $description ] ) 

# PHP7
bool assert ( mixed $assertion [, Throwable $exception ] )

example1:

// 断言操作选项函数
assert_options(ASSERT_ACTIVE, 1); // 默认是打开断言的

assert('1==2'); //  Warning: assert(): Assertion "1==2" failed in D:\wamp\www\XF9_Trunk_Website3.0\new\Public\index.php on line 3

echo 555555555555; // 默认情况下继续执行,对于调试很好,尤其是可以使用callback,但是生产环境就不建议使用了。

assert() 会检查指定的 assertion 并在结果为 FALSE 时采取适当的行动(视 assert_options 而定)。

assert_options

ASSERT_ACTIVE=1
ASSERT_WARNING =1
ASSERT_BAIL= 0
ASSERT_QUIET_EVAL= 0
ASSERT_CALLBACK= (NULL)
// Active assert and make it quiet
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_WARNING, 0);
assert_options(ASSERT_QUIET_EVAL, 1);

// Create a handler function
function my_assert_handler($file, $line, $code)
{
    echo "<hr>Assertion Failed:File '$file'<br />Line '$line'<br />Code '$code'<br /><hr />";
}

// Set up the callback
assert_options(ASSERT_CALLBACK, 'my_assert_handler');

// Make an assertion that should fail
assert('mysql_query("")');

安全性

function fo(){
 file_put_contents('a.php','www.bo56.com');
 return true;
}
$func = $_GET["func"];
assert("$func()");

如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。跟eval()类似, 不过 eval($assertion) 只是执行符合php编码规范的$code_str。

PHP7中的断言

向后兼用并增强之前的 assert() 的方法。 它使得在生产环境中启用断言为零成本,并且提供当断言失败时抛出特定异常的能力。

ini_set('assert.exception', 1);

class CustomError extends AssertionError {}
assert(2 == 1, new CustomError('Some error message'));

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

探索需求

探索需求

章柏幸、王媛媛、谢攀、杰拉尔德・温伯格、唐纳德・高斯 / 章柏幸、王媛媛、谢攀 / 清华大学出版社 / 2004-7-1 / 39.00元

本书将与您一起寻找"什么是客户真正想要的"这一问题的答案。 本书着眼于系统设计之前的需求过程,它是整个开发过程(如何设计人们想要的产品和系统)中最有挑战性的那部分。通过对一些需求分析中的常见误区和问题的分析和讨论,从和客户沟通开始,深入研究一些可能的需求,澄清用户和开发者期望值,最终给出了能够大幅度提高项目成功几率的一些建议方法。 本书由该领域内公认的两位作者合著,搜集了他们在大大小小......一起来看看 《探索需求》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具