码迷,mamicode.com
首页 > 其他好文 > 详细

assert进行程序调试

时间:2014-07-29 16:18:19      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:style   color   使用   os   io   for   cti   ar   

assert这个函数在php语言中是用来判断一个表达式是否成立。返回true or false;
例如
<?php
$s = 123;
assert("is_int($s)");
?>

从这个例子可以看到字符串参数会被执行,这跟eval()类似。不过eval($code_str)只是执行符合php编码规范的$code_str。
assert的用法却更详细一点。

assert_option()可以用来对assert()进行一些约束和控制;
默认值
ASSERT_ACTIVE=1 //Assert函数的开关
ASSERT_WARNING =1 //当表达式为false时,是否要输出警告性的错误提示,issue a PHP warning for each failed assertion
ASSERT_BAIL= 0 //是否要中止运行;terminate execution on failed assertions
ASSERT_QUIET_EVAL= 0 //是否关闭错误提示,在执行表达式时;disable error_reporting during assertion expression evaluation  
ASSERT_CALLBACK= (NULL) // 是否启动回调函数 user function to call on failed assertions

如果按照默认值来,在程序的运行过程中调用assert()来进行判断表达式,遇到false时程序也是会继续执行的,这在生产环境中这样使用是不好的,而 在开发调试环境中,却是一种debug的不错的方式。特别是用上callback的方法,可以知道具体的出错信息。例如


<?php
// 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("")‘);
?>


所以,php的官方文档里头是建议将assert用来进行debug,我们可以发现还有一个开关ASSERT_ACTIVE可以用来控制是否开启debug。

例如
<?php
function fo(){
  $fp = fopen("c:/test.php",‘w‘);
  fwrite($fp,"123");
  fclose($fp);
  return true;
}
assert("fo()");
?>

assert进行程序调试,布布扣,bubuko.com

assert进行程序调试

标签:style   color   使用   os   io   for   cti   ar   

原文地址:http://my.oschina.net/u/732794/blog/295674

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!