5.6->7.0变更
新特性
- 强制标量声明:文件顶部添加(declare(ticks=1);),变量添加类型声明
- 返回值类型声明:function name():array
- null合并运算符:语法糖 “??”,含义(如果变量存在且值不为NULL, 它就会返回自身的值,否则返回它的第二个操作数)
- 太空船操作符(组合比较符):“<=> ”,返回-1、0或1
- 通过 define()定义常量数组
- 匿名类:通过new class 来实例化一个匿名类
- Closure::call():暂时绑定一个方法到对象上闭包并调用它( this->x;};
echo $getX->call(new A); ) - 为unserialize()提供过滤:通过白名单的方式来防止潜在的代码注入
- IntlChar:自身定义了许多静态方法用于操作多字符集的 unicode 字符
- 预期(assert):使得在生产环境中启用断言为零成本
- use分组引用类,方法或常量
- 生成器
- 整数除法函数 intdiv()
- preg_replace_callback_array():可以使用一个关联数组来对每个正则表达式注册回调函数, 正则表达式本身作为关联数组的键, 而对应的回调函数就是关联数组的值
- random_bytes()和 random_int() 用来产生高安全级别的随机字符串和随机整数
新函数: - gmp_random_seed():GNU 多重精度
7.0->7.1变更
新特性
- 可为空(Nullable)类型:参数以及返回值的类型现在可以通过在类型前加上一个问号使之允许为空
- Void 函数:返回值声明为 void 类型的方法要么干脆省去 return 语句,要么使用一个空的 return 语句
- 类常量可见性:通过public,protected,private限定常量的可见性
- iterable伪类
- 多异常捕获处理:catch (FirstException | SecondException $e),通过管道字符(|)来实现多个异常的捕获
- list()现在支持键名:list("id" => name1) = $data[0]
- 支持为负的字符串偏移量:$string[-1],"abcdef"[-2],strpos("aabbcc", "b", -3)
- 异步信号处理:一个新的名为 pcntl_async_signals()的方法现在被引入
- 对服务器推送的支持现在已经被加入到 CURL 扩展中
从PHP 7.1.x 移植到 PHP 7.2.x
新特性:
- 新的对象类型: object,function test(object $obj) : object
- 通过名称加载扩展:可以使用 dl() 函数进行启用
- 允许重写抽象方法(Abstract method)
- 使用Argon2算法生成密码散列
- 为 ext/PDO新增额外的模拟调试信息:PDOStatement::debugDumpParams()
- ext/LDAP(LDAP扩展) 支持新的操作方式
- ext/sockets(sockets扩展)添加了地址信息
- 允许分组命名空间的尾部逗号