php7的特性有哪些

  介绍

php7的特性有哪些?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<强>新特性预览

ZEND引擎升级到Zend  Engine  3,也就是所谓的PHP  NG   增加抽象语法树,使编译更加科学   64位的INT支持   统一的变量语法   原声的TLS 作用;对扩展开发有意义   一致性foreach循环的改进   新增,& lt;=祝辞,* *,? ?,,\ u {xxxx}操作符   增加了返回类型的声明   增加了标量类型的声明   核心错误可以通过异常捕获了   增加了上下文敏感的词法分析

<强>移除的一些特性

1。移除一些旧的扩展,被移迁移到了PECL(例如:mysql)
2。移除sapi的支持
3。你们;和& lt; ?语言=" php "这样的标签被移除了
4.16进制的字符串转换被废除了

//PHP5   “0 x10",==,“16”;//PHP7   “0 x10", !=,“16“


5. http_raw_post_data移除了(可以使用php://输入替代)
6。静态函数里面不再支持通过一个不兼容的美元这调用一个非静态的函数了
o=美元,新名称{},不再支持这样的写法
7. . ini文件移除了#作为注释,统一用,去注释

<强>一些行为的改变

不在支持函数定义同名参数
类型的同名构造函数不推荐使用了(目前没有移除,后续会移除)
字符串,int,浮动等这些关键字不能被作为类名使用了
func_get_args()获取的是当前变量的值

function  test  (num美元),{   美元才能num + +;   ,,var_dump (func_get_args () [0]);   };      测试(1)//PHP5   int (1)//PHP7   int (2)

下面就挑选了一些主要的,核心的,对我们PHP来说比较重要的特性介绍一下

<强> PHP NG

新的PHP引擎优化了很多地方,也正式因为如此,才使得php7相对于php5性能有了接近两倍的提升!

ZVAL结构的重构

 php7的特性有哪些

左边是php5的ZVAL(24字节),右边是php7的ZVAL(16字节);

可以看出来php7的ZVAL要比php5还要复杂,但是却能从24个字节下降到16个字节,为什呢?

在C语言中结构的每一个成员变量要各自占据一块独立的内存空间,而联盟里的成员变量是共用一块内存空间(php7中大量使用联盟替换了结构),因此,虽然成员变量看起来多了不少,但是实际占据的内存空间有很多都是公用的却下降了。

使用新数组的Zend替换之前的HashTale结构

我们PHP程序中使用最多,最有用,最方便,最灵活的就是数组了,而php5它的底层就是哈希表实现的,php7使用了新数组的Zend类型、性能和访问速度上都有了大幅度提升!
一些非常常用,开销不大的的函数直接变成了引擎支持的操作码

call_user_function (_array),=祝辞ZEND_INIT_USER_CALL   is_int/字符串数组/*,=祝辞ZEND_TYPE_CHECK   strlen =祝辞ZEND_STRLEN   defined =祝辞,ZEND +定义

使用了新的内存分配,管理方式,减少了内存的浪费
核心排序zend_sort的优化

//PHP5 作用;快速排序(非稳定排序)   数组(1,=祝辞,0,0,=祝辞,0)//PHP7 安康快速排序+选择排序(稳定排序)   阵列(0,=祝辞,0,1,=祝辞,0)

小于16个元素的使用选择排序,大于16个按照16个为单位去分割,分别使用选择排序,然后再全部合起来使用快速排序。排序较之前相比,内部元素由非稳定排序变成稳定排序,减少元素的交换次数,减少对内存的操作次数、性能提升40%
抽象语法树

 php7的特性有哪些

假如现在我们有这样的需求,要对php源文件就行语法检测,实现编码规范.php5之前的话,没有AST,直接从解析器就生成了操作码!就需要借助一些外部的php语法解析器来实现;而php7增加了AST,我们可以自己去实现这样一个扩展,利用扩展提供的函数可以直接获取文件对应的的AST结构,而这样的结构正是我们可以识别的,所以就可以在这个基础上去做一些优化和判断了。

<强> 64位的INT支持

支持存储大于2 gb的字符串
支持上传大小大于2 gb的文件
保证字符串在所有平台上【64位】都是64位
统一的语法变量

$ $ foo[& # 39;酒吧# 39;][& # 39;巴兹# 39;】//PHP5   ($ $ foo)['酒吧# 39;][& # 39;巴兹# 39;】//PHP7:遵循从左到右的原则   $ {$ foo['酒吧# 39;][& # 39;巴兹# 39;]}

php7的特性有哪些