简述 assert 和 eval 的区别

       首先和大家说明,我所理解的也是在网上查询资料,总结下来的。我尽可能说的通俗易懂一些,看网上的资料,发现很多高大上的东西,我对PHP理解很浅,望大家批评指正。(我所理解的对于初学者够用了)

       相同点:二者都可以执行PHP语句。只不过是,eval规范更加严格一些,必须符合PHP代码要求。而assert则没有那么严格,执行PHP表达式即可。并不是对assert无计可施,可以采用assert_option()来进行对assert的控制。但是在生产环境强烈建议不使用assert函数(哪怕对其限制,也并不安全)。

       不同点:

       eval():该函数对于在数据库文本字段中供日后计算而进行的代码存储很有用。(在生产中也建议少用)
注意:1.eval()里必须是字符串;2.eval()里的引号必须是双引号,因为单引号不能解析字符串里的变量$str;
       eval定义和用法:
(1)eval() 函数把字符串按照 PHP 代码来计算(计算=执行)。
(2)该字符串必须是合法的 PHP 代码,且必须以分号结尾。
(3)如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。

       在程序的运行过程中调用assert()来进行判断表达式,遇到false时程序也是会继续执行的,这在生产环境中这样使用是不好的,而 在开发调试环境中,却是一种debug的不错的方式。特别是用上callback的方法,可以知道具体的出错信息。所以,php的官方文档里头是建议将assert用来进行debug,我们可以发现还有一个开关ASSERT_ACTIVE可以用来控制是否开启debug。

       给大家简单说了一下eval和assert的区别,望大家批评指正,共同学习。

      

  

猜你喜欢

转载自blog.csdn.net/thj_1995/article/details/83893334