2024年PHP开发者大会日本站

向后不兼容的更改

日期

DateTime::createFromImmutable() 现在具有 static 的暂定返回类型,之前是 DateTime

DateTimeImmutable::createFromMutable() 现在具有 static 的暂定返回类型,之前是 DateTimeImmutable

相对格式 中的 number 符号不再接受多个符号,例如 +-2

ODBC

ODBC 扩展现在对用户名和密码进行转义,这种情况发生在同时传递连接字符串和用户名/密码时,并且必须追加字符串。之前,包含需要转义的值的用户值可能会创建格式错误的连接字符串,或注入来自用户提供的数据的值。转义规则应与 .NET BCL DbConnectionOptions 行为相同。

PDO_ODBC

传递连接字符串时,PDO_ODBC 扩展也对用户名和密码进行转义。有关详细信息,请参阅ODBC 扩展的更改

标准

glob() 如果所有路径都受 open_basedir 限制,则现在返回一个空的 array。之前它返回 false。此外,即使只有某些路径受 open_basedir 限制,现在也会发出警告。

FilesystemIterator::__construct():在 PHP 8.2.0 之前,FilesystemIterator::SKIP_DOTS 常量始终设置且无法禁用。为了保持之前的行为,使用 flags 参数时必须显式设置该常量。flags 参数的默认值未修改。

strtolower()strtoupper()stristr()stripos()strripos()lcfirst()ucfirst()ucwords()str_ireplace() 不再受区域设置影响。它们现在执行 ASCII 大小写转换,就像区域设置是“C”一样。这些函数的本地化版本可在 MBString 扩展 中找到。此外,array_change_key_case() 和使用 SORT_FLAG_CASE 的排序现在也使用 ASCII 大小写转换。

str_split() 现在对于空 string 返回一个空的 array。之前它返回一个包含单个空字符串条目的数组。mb_str_split() 不受此更改的影响,因为它之前的行为就是这样。

ksort()krsort() 现在在 SORT_REGULAR 下使用标准 PHP 8 规则进行数字字符串比较。

var_export() 不再省略导出的类的开头反斜杠,即这些类现在是完全限定的。

标准 PHP 库 (SPL)

以下方法现在强制执行其签名

SplFileObject::hasChildren() 现在具有 false 的暂定返回类型,之前是 bool

SplFileObject::getChildren() 现在具有 null 的暂定返回类型,之前是 ?RecursiveIterator

GlobIterator 如果所有路径都受 open_basedir 限制,则现在返回一个空的 array。之前它返回 false。此外,即使只有某些路径受 open_basedir 限制,现在也会发出警告。

添加备注

用户贡献的笔记

此页面没有用户贡献的笔记。
To Top