向后不兼容的更改
PHP 核心
fn
关键字
fn
现在是保留关键字。特别是,它不能再用作函数或类名。它仍然可以作为方法或类常量名使用。
<?php
标签在文件末尾
文件末尾的 <?php
(没有尾随换行符)现在将被解释为打开的 PHP 标签。以前它被解释为短打开标签后跟文字 php
,并导致语法错误(使用 short_open_tag=1
),或者被解释为文字 <?php
字符串(使用 short_open_tag=0
)。
序列化
已删除 o
序列化格式。由于它从未由 PHP 生成,因此这可能只会破坏对手动制作的字符串的 unserialization。
密码算法常量
密码散列算法标识符现在是可空字符串,而不是整数。
正确使用常量 PASSWORD_DEFAULT、PASSWORD_BCRYPT、PASSWORD_ARGON2I 和 PASSWORD_ARGON2ID 的应用程序将继续正常工作。
如果操作失败,fread() 和 fwrite() 现在将返回 false
。以前返回空字符串或 0。EAGAIN/EWOULDBLOCK 不被视为失败。
这些函数现在还会在失败时引发通知,例如尝试写入只读文件资源时。
BCMath 高精度数学
如果传递非格式良好的数字,例如 "32foo"
,BCMath 函数现在将发出警告。与以前一样,该参数将被解释为零。
MySQLi
已删除嵌入式服务器功能。它至少从 PHP 7.0 开始就已损坏。
已弃用未记录的 mysqli::$stat
属性,取而代之的是 mysqli::stat()。
传入的 Cookie
从 PHP 7.4.11 开始,出于安全原因,传入 Cookie 的 *名称* 将不再进行 URL 解码。