Php/docs/migration80.other-changes
其他变更
SAPI 模块的变更
Apache2Handler
PHP 模块从 php7_module
重命名为
php_module
。
Function 的变更
Reflection
可通过新参数 filter
来过滤 ReflectionClass::getConstants() 和
ReflectionClass::getReflectionConstants() 的返回结果。
新增三个常量,搭配使用:
ReflectionClassConstant::IS_PUBLIC
ReflectionClassConstant::IS_PROTECTED
ReflectionClassConstant::IS_PRIVATE
Zip
- ZipArchive::addGlob() 和 ZipArchive::addPattern() 方法中
options
数组参数可接受更多的值:flags
comp_method
comp_flags
env_method
enc_password
- ZipArchive::addEmptyDir()、ZipArchive::addFile()、 ZipArchive::addFromString() 方法新增
flags
参数。 可用于名称编码 (ZipArchive::FL_ENC_*
) 与条目(entry)替换 (ZipArchive::FL_OVERWRITE
)。 - ZipArchive::extractTo() 现在会储存文件的修改时间。
其他扩展变更
Enchant
现在环境允许时,enchant 会默认使用 libenchant-2。 仍然支持 libenchant 1,但已经废弃,并将在未来移除。
GD
- imagepolygon()、 imageopenpolygon()、imagefilledpolygon() 的参数
num_points
现在为可选参数。 这些函数可用三或四个参数去调用。 省略参数时,会按count($points)/2
计算。 - 新增函数 imagegetinterpolation(),可获取当前的插值(interpolation)。
JSON
现在无法禁用 JSON 扩展,将是任意 PHP 版本的内置功能,类似 date 扩展。
MBString
更新 Unicode 数据表版本到 13.0.0。
LibXML
现在要求 libxml 最小版本为 2.9.0。 这代表着确保了默认情况下禁用了外部实体加载(external entity loading)的功能。 无需额外步骤即可防范 XML 外部实体注入攻击(XXE attacks)。
MySQLi / PDO MySQL
- 未使用 mysqlnd 时(也是默认且推荐的做法), 支持的最小 libmysqlclient 版本为 5.5。
- 现在 mysqli_result 实现(implements)了 IteratorAggregate (之前是 Traversable)。
PGSQL / PDO PGSQL
PGSQL 与 PDO PGSQL 扩展需要 libpq 的版本号至少为 9.1。
Readline
在交互提示开始之前调用 readline_completion_function() (例如在 auto_prepend_file 中), 将重写默认的交互输入补全函数。 之前,只有交互提示(interactive prompt)开始后, readline_completion_function() 才会运行。
SimpleXML
现在 SimpleXMLElement 实现(implements)了 RecursiveIterator 并吸收了 SimpleXMLIterator 的功能。 SimpleXMLIterator 是 SimpleXMLElement 的一个空扩展。
INI 文件处理的变更
- com.dotnet_version 是一个新的 INI 指令,用于选择 dotnet 对象的 .NET framework 版本。
- zend.exception_string_param_max_len 是一个新的 INI 指令,用于设置字符串化的调用栈(stack strace)的最大字符串长度。
EBCDIC
不再支持 EBCDIC targets,虽然它不太可能还在当初的地方继续运行。
性能
- opcache 扩展新增了即时编译(JIT) 支持。
- array_slice() 用于没有空隙的数组时, 将不会扫描整个数组去查找开始的位移(offset)。 在 offset 较大、长度较小时,会显著减少函数的运行时间。
- 当本地化
LC_CTYPE
为"C"
时(也是默认值), strtolower() 会使用 SIMD 的实现。