PHP Conference Japan 2024

其他更改

核心更改

iterable 类型现在是 array|Traversable 的内置编译时别名。因此,与 iterable 相关的错误消息现在将使用 array|Traversable。类型反射保留用于单个 iterable(和 ?iterable)以生成名称为 iterableReflectionNamedType,但是联合类型中 iterable 的用法将转换为 array|Traversable

发送的 Cookie 的日期格式现在为 'D, d M Y H:i:s \G\M\T';以前是 'D, d-M-Y H:i:s T'

SAPI 模块中的更改

CLI

STDOUT、STDERR 和 STDIN 流在资源销毁时不再关闭,这主要是在 CLI 完成时。但是,仍然可以使用 fclose() 等显式关闭这些流。

更改的函数

核心

strcmp()strcasecmp()strncmp()strncasecmp()substr_compare() 函数,使用二进制安全字符串比较不再保证在字符串长度不相等时返回 strlen($string1) - strlen($string2),但现在可能会返回 -11。不要依赖任何具体的值,而应将返回值与 0 进行比较。

DBA

dba_open()dba_popen() 现在具有以下强制签名

dba_open(
    string $path,
    string $mode,
    ?string $handler = null,
    int $permission = 0644,
    int $map_size = 0,
    ?int $flags = null
): resource|false

dba_fetch() 的可选跳过参数现在位于末尾,与 PHP 用户空间语义一致。其签名现在为

dba_fetch(string|array $key, resource $handle, int $skip): string|false
重载签名
dba_fetch(string|array $key, int $skip, resource $handle): string|false
仍然被接受,但建议使用新的标准变体。

随机

random_bytes()random_int() 现在在 CSPRNG 失败时抛出 \Random\RandomException。以前会抛出一个普通的 \Exception

SPL

iterator_to_array()iterator_count()iterator 参数已从 Iterator 扩展到 iterable,允许传递数组。

扩展的其他更改

日期

DatePeriod 的属性现在已正确声明。

Intl

IntlBreakIteratorIntlRuleBasedBreakIteratorIntlCodePointBreakIteratorIntlPartsIteratorIntlCalendarCollatorIntlIteratorUConverterIntlDateFormatterIntlDatePatternGeneratorMessageFormatterResourceBundleSpoofcheckerIntlTimeZoneTransliterator 的实例不再可序列化。以前,它们可以序列化,但反序列化会产生不可用的对象或失败。

MySQLi

对 libmysql 的支持已删除,并且不再可能使用 libmysql 编译 mysqli。从现在开始,mysqli 扩展只能使用 mysqlnd 编译。mysqlnd 中不可用的所有 libmysql 功能都已删除

OCI8

现在所需的最低 Oracle Client 库版本为 11.2。

PCRE

现在支持模式字符串中的 NUL 字符 (\0)。

会话

在会话处于活动状态或已发送输出时尝试更改 session.cookie_samesite INI 指令现在将失败并发出警告。这使行为与所有其他会话 INI 设置保持一致。

SQLite3

sqlite3.defensive 现在为 INI_USER

标准

getimagesize() 现在报告 AVIF 图像的实际图像尺寸、位数和通道数。以前,尺寸被报告为 0x0,并且根本没有报告位数和通道数。

Tidy

tidy 类的属性现在已正确声明。并且 tidyNode 类的属性现在已正确声明为只读。

Zip

Zip 扩展已更新至 1.20.0 版本,添加了以下方法

INI 文件处理的更改

已为整数 INI 设置添加了对二进制 (0b/0B) 和八进制 (0o/0O) 前缀的支持。以零 (0) 开头的整数 INI 设置将继续被解释为八进制整数。

解析某些格式错误的值现在将触发警告,而之前则会静默忽略。为了向后兼容,这些值的解释没有改变。这会影响以下设置

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top