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