不向后兼容的变更
PHP 核心中不向后兼容的变更
fn
关键词
fn
成为了保留关键词。需要特别注意,它不能再做为函数名或类名使用,但是仍然可以做为方法名和常量名存在。
文件尾部的 <?php
标签
文件尾部的 <?php
标签(不包含空行)将会被解释成 PHP 起始标记。之前,不是解释为短开始标记,后跟文字 php
并导致语法错误(short_open_tag=1
),就是解释为文字 <?php
字符串(short_open_tag=0
)。
Serialization 序列化
序列化类型 o
被移除。因为它不是由 PHP
生成的,这可能会影响到之前项目中手动生成的序列化字符串。
密码算法常量
密码哈希算法标识符现在是可空字符串,而不再是整数。
应用中如果正常使用了常量 PASSWORD_DEFAULT,PASSWORD_BCRYPT,PASSWORD_ARGON2I
和 PASSWORD_ARGON2ID 将不会受到影响。
fread() 和 fwrite()
在操作失败的时候会返回 false
。之前的版本中会返回空字符串或 0。EAGAIN/EWOULDBLOCK 不视为故障。
这些函数现在也会在失败时发出 NOTICE 通知,例如当试图写入一个只读文件资源时。
BCMath 任意精度数学
如果传递了例如 "32foo"
这种格式不正确的数字,BCMath 函数现在将发出警告。和以前一样,参数将解释为 0。
MySQLi
内嵌服务器功能已移除。自 PHP 7.0 起就已破坏了。
未记录的 mysqli::$stat
属性已移除,以支持 mysqli::stat()。
接收到的 Cookies
从 PHP 7.4.11 开始,为了安全考虑,接受到的 Cookie 中的 names 参数不再被
URL 编码。