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 的实现。


本站为非盈利网站,作品由网友提供上传,如无意中有侵犯您的版权,请联系删除