assert 判断一个表达式是否成立。返回true or false;
$s = 123;
?>
不过eval($code_str)只是执行符合php编码规范的$code_str。
注意:1.eval()里必须是字符串;
eval定义和用法:
(2)该字符串必须是合法的 PHP 代码,且必须以分号结尾。
assert的用法却更详细一点。
默认值
ASSERT_WARNING =1 //当表达式为false时,是否要输出警告性的错误提示,issue a PHP warning for each failed assertion
ASSERT_QUIET_eval= 0 //是否关闭错误提示,在执行表达式时;disable error_reporting during assertion expression evaluation
php的官方文档里头是建议将assert用来进行debug,我们可以发现还有一个开关ASSERT_ACTIVE可以用来控制是否开启debug。
既然assert主要作用是debug,就不要在程序发布的时候还留着它。在程序中用assert来对表达进行判断是不明智的,原因上文说了, 一个是在生产环境中assert可能被disabled,所以assert不能被完全信任;二是assert()可以被继续执行;而如果在生产环境让 ASSERT_ACTIVE=1,那这个表达式字符串可以被执行本身就存在安全隐患。assert引起的代码注射
例如
function fo(){
$fp = fopen("c:/test.php",'w');
fclose($fp);
}
?>
以上就是php中assert和eval的详细介绍(代码示例)的详细内容,更多请关注其它相关文章!
更多技巧请《转发 + 关注》哦!
