二、新功能
Core
增加了组式 use 声明。 (RFC:
https://wiki.php.net/rfc/group_use_declarations)
增加了 null 合并操作符 (??)。 (RFC:
https://wiki.php.net/rfc/isset_ternary)
在 64 位架构上支持长度 >= 231 字节的字符串。
增加了 Closure::call() 方法(仅工作在用户侧的类)。
在双引号字符串和 here 文档中增加了 \u{xxxxxx} Unicode 码点转义格式。
define() 现在支持数组作为常量值,修复了一个当 define() 还不支持数组常量值时的疏忽。
增加了比较操作符 (<=>),即太空船操作符。 (RFC:
https://wiki.php.net/rfc/combined-comparison-operator)
为委托生成器添加了类似协程的 yield from 操作符。 (RFC:
https://wiki.php.net/rfc/generator-delegation)
保留的关键字现在可以用在几种新的上下文中。 (RFC:
https://wiki.php.net/rfc/context_sensitive_lexer)
增加了标量类型的声明支持,并可以使用 declare(strict_types=1) 的声明严格模式。
(RFC:
https://wiki.php.net/rfc/scalar_type_hints_v5)
增加了对加密级安全的用户侧的随机数发生器的支持。 (RFC:
https://wiki.php.net/rfc/easy_userland_csprng)
Opcache
增加了基于文件的二级 opcode 缓存(实验性——默认禁用)。要启用它,PHP 需要使用 --enable-opcache-file 配置和构建,然后 opcache.file_cache=<DIR> 配置指令就可以设置在 php.ini 中。二级缓存也许可以提升服务器重启或 SHM 重置时的性能。此外,也可以设置opcache.file_cache_only=1来使用文件缓存而根本不用SHM(也许对于共享主机有用);设置 opcache.file_cache_consistency_checks=0来禁用文件缓存一致性检查,以加速载入过程,有安全风险。
OpenSSL
当用 OpenSSL 1.0.2 及更新构建时,增加了 "alpn_protocols" SSL 上下文选项来允许加密的客户端/服务器流使用 ALPN TLS 扩展去协商替代的协议。协商后的协议信息可以通过 stream_get_meta_data() 输出访问。
Reflection
增加了一个 ReflectionGenerator 类(yield from Traces,当前文件/行等等)。
增加了一个 ReflectionType 类来更好的支持新的返回类型和标量类型声明功能。新的 ReflectionParameter::getType() 和 ReflectionFunctionAbstract::getReturnType() 方法都返回一个 ReflectionType 实例。
Stream
添加了新的仅用于 Windows 的流上下文选项以允许阻塞管道读取。要启用该功能,当创建流上下文时,传递 array("pipe" => array("blocking" => true)) 。要注意的是,该选项会导致管道缓冲区的死锁,然而它在几个命令行场景中有用。
✎﹏๓₯㎕ด้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้
每段青春都会苍老、
但我希望记忆里的你一直都好