简述在写代码的时候,我们总是会做一些假设。断言用于在代码中捕获这些假设。断言可以看作是异常处理形式的一种高级方法。程序员断言表达式在程序中的特定点的计算结果为真。如果表达式为假,则操作中止。可以随时启用和禁用断言验证,因此可以为测试启用断言,为部署禁用断言。此外,在程序运行后,如果最终用户遇到问题,他们可以重新启用断言。使用断言可以创建更稳定、质量更好且不易出错的代码。单元测试必须使用断言!PHPassertion#PHP5boolassert(mixed$assertion[,string$description])#PHP7boolassert(mixed$assertion[,Throwable$exception])example1://断言操作选项functionassert_options(ASSERT_ACTIVE,1);//默认打开assert('1==2');//警告:assert():断言“1==2”在D:\wamp\www\XF9_Trunk_Website3.0\new\Public\index.php中第3行失败echo555555555555;//默认继续执行,有利于调试,尤其是可以使用callback,但生产环境不推荐使用。assert()将检查指定的断言并在结果为FALSE时采取适当的操作(取决于assert_options)。assert_optionsASSERT_ACTIVE=1//Assert函数的开关ASSERT_WARNING=1//当表达式为false时,是否输出警告错误信息,每次失败发出PHP警告assertionASSERT_BAIL=0//是否中止操作;terminateexecutiononfailedassertionsASSERT_QUIET_EVAL=0//是否关闭错误提示,执行表达式时;disableerror_reportingduringassertionexpressionevaluationASSERT_CALLBACK=(NULL)//是否启用回调函数用户函数调用失败的断言//激活断言并使其安静assert_options(ASSERT_ACTIVE,1);assert_options(ASSERT_WARNING,0);assert_options(ASSERT_QUIET_EVAL,1);//创建处理函数functionmy_assert_handler($file,$line,$code){echo"
AssertionFailed:File'$file'
Line'$line'
Code'$code'
";}//设置回调assert_options(ASSERT_CALLBACK,'my_assert_handler');//做出应该失败的断言assert('mysql_query("")');安全函数fo(){file_put_contents('a.php','www.bo56.com');返回true;}$func=$_GET["func"];assert("$func()");如果assertion是一个字符串,它会被assert()作为PHP代码执行,类似于eval(),但是eval($assertion)只执行符合php编码标准的$code_str。PHP7中的断言倒退并增强了以前的assert()方法。它以零成本在生产中启用断言,并提供在断言失败时抛出特定异常的能力。ini_set('assert.exception',1);classCustomErrorextendsAssertionError{}assert(2==1,newCustomError('Someerrormessage'));