PHP Conference Japan 2024

其他更改

SAPI 模块中的更改

Apache2Handler

PHP 模块已从 php7_module 重命名为 php_module

已更改的函数

反射

ReflectionClass::getConstants()ReflectionClass::getReflectionConstants() 结果现在可以通过新的参数 filter 进行过滤。添加了三个新的常量来与之一起使用

标准

数学函数 abs()ceil()floor()round() 现在正确地遵守 strict_types 指令。以前,即使在严格类型模式下,它们也会强制转换第一个参数。

Zip

扩展的其他更改

CURL

  • CURL 扩展现在至少需要 libcurl 7.29.0。

  • curl_version() 的已弃用参数 version 已被删除。

日期和时间

DatePeriod 现在实现了 IteratorAggregate(而不是 Traversable)。

DOM

DOMNamedNodeMapDOMNodeList 现在实现了 IteratorAggregate(而不是 Traversable)。

Intl

IntlBreakIteratorResourceBundle 现在实现了 IteratorAggregate(而不是 Traversable)。

Enchant

Enchant 扩展现在默认使用 libenchant-2(如果可用)。libenchant 版本 1 仍然受支持,但已弃用,并可能在将来删除。

GD

JSON

JSON 扩展不再可以禁用,并且始终是任何 PHP 构建的组成部分,类似于日期扩展。

MBString

Unicode 数据表已更新到版本 13.0.0。

PDO

PDOStatement 现在实现了 IteratorAggregate(而不是 Traversable)。

LibXML

现在最低要求的 libxml 版本为 2.9.0。这意味着现在保证默认情况下禁用外部实体加载,并且无需采取额外措施即可防止 XXE 攻击。

MySQLi / PDO MySQL

PGSQL / PDO PGSQL

PGSQL 和 PDO PGSQL 扩展现在至少需要 libpq 9.1。

Readline

在交互式提示开始之前(例如,在 auto_prepend_file 中)调用 readline_completion_function() 现在将覆盖默认的交互式提示完成函数。以前,readline_completion_function() 仅在交互式提示启动后调用时才有效。

SimpleXML

SimpleXMLElement 现在实现了 RecursiveIterator 并吸收了 SimpleXMLIterator 的功能。SimpleXMLIteratorSimpleXMLElement 的一个空扩展。

对 INI 文件处理的更改

  • com.dotnet_version 是一个新的 INI 指令,用于选择要用于 dotnet 对象的 .NET 框架版本。

  • zend.exception_string_param_max_len 是一个新的 INI 指令,用于设置字符串化堆栈跟踪中参数的最大字符串长度。

EBCDIC

EBCDIC 目标不再受支持,尽管它们不太可能仍然有效。

性能

  • 一个即时 (JIT) 编译器已添加到 opcache 扩展中。

  • 在没有间隙的数组上使用 array_slice() 将不再扫描整个数组以查找起始偏移量。这可能会大大减少具有大偏移量和小长度的函数的运行时间。

  • 当使用 "C" LC_CTYPE 区域设置(默认值)时,strtolower() 现在使用 SIMD 实现。

添加注释

用户贡献的注释 1 条注释

barry dot nelson at amobiledevice dot com
1 年前
如果在 SuSe Linux 上加载 PHP8 apache 模块,配置脚本会错误地尝试使用自动生成的加载语句来加载它:
LoadModule php8_module /usr/lib64/apache2/mod_php8.so
这不起作用,下面的补丁修复了配置文件生成器...

--- /usr/share/apache2/get_module_list 2023-01-14 22:41:49.586825349 -0500
+++ /usr/share/apache2/get_module_list 2023-01-14 22:42:02.171600410 -0500
@@ -91,4 +91,8 @@
esac

+ if [ "$module_id" = "php8_module" ]; then
+ module_id="php_module"
+ fi
+
if [[ -f $module_path ]]; then
printf "LoadModule %-30s %s\n" $module_id $module_path >&3
To Top