php7 & php8 知识点大略

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php7 & php8 知识点大略相关的知识,希望对你有一定的参考价值。

参考技术A php7 速度快的原因

zval定义改变

之前char int用的结构体,现在统一用联合体定义。扩充字段也是联合体

zval能保存的数据不再引用,比如bool、int,直接赋值,不需要引用计数了

hashtable结构修改

zend_array,Bucket结构更简单,内存占用更少。去掉了为了解决hash冲突,的2个双向链表。直接用连续的数组。

zend_string结构修改 从两个结构体,换成了一个结构体。存储数据使用柔性数组代替了指针。

函数服用机制

内置函数

php7新特性

增加类型声明

??双问号合并运算

<=> 船运算符 返回 -1 0 11

常量数组

define('sites', [

  'Google',

  'Runoob',

  'Taobao'

]);

可以定义匿名类

反序列化过滤unserialize

随机数random_bytes random_int

use 可以批量导入

php8

方法参数可以跳过

可以用#注释

类的初始化属性可以不用定义

类型声明可以多种

代替switch的match表达式

运算符链式调用。不用多个if

0 == 'foobar'  是false

jit

Opcache直接生成机器码提高性能。

Opcache会做opcode层面的优化,比如图中的俩条opcode合并为一条

PHP8的JIT目前是在Opcache之中提供的

JIT在Opcache优化之后的基础上,结合Runtime的信息再次优化,直接生成机器码

JIT不是原来Opcache优化的替代,是增强

目前PHP8只支持x86架构的CPU

以上是关于php7 & php8 知识点大略的主要内容,如果未能解决你的问题,请参考以下文章

linux 安装多个PHP版本(php5.6 php7.1 php7.2 php7.3 php7.4 php8.0)nginx配置php多版本

Deepin20 安装 PHP8等环境

PHP7.0 小知识点摘录

PHP RFC投票通过,PHP8将会支持JIT

PHP7新特性及Laravel常见知识梳理

PHP7语法知识:流程控制语句