其他更改

使用无效字符串进行算术运算时的通知和警告

当使用期望数字的运算符(+ - * / ** % << >> | & ^)或它们的赋值等效项强制转换无效字符串时,引入了新的 E_WARNINGE_NOTICE 错误。当字符串以数字值开头但包含尾随非数字字符时,会发出 E_NOTICE,当字符串不包含数字值时,会发出 E_WARNING

<?php
'1b' + 'something';

上面的例子将输出

Notice: A non well formed numeric value encountered in %s on line %d
Warning: A non-numeric value encountered in %s on line %d

警告八进制转义序列溢出

以前,3 字节八进制字符串转义序列会静默溢出。现在,它们仍然会溢出,但会发出 E_WARNING

<?php
var_dump
("\500");

上面的例子将输出

Warning: Octal escape sequence overflow \500 is greater than \377 in %s on line %d
string(1) "@"

$this 的不一致修复

虽然 $this 被认为是 PHP 中的一个特殊变量,但它缺乏适当的检查以确保它不被用作变量名或重新赋值。现在已对此进行了修正,以确保 $this 不能是用户定义的变量,不能重新赋值为不同的值,也不能被全局化。

不使用哈希的会话 ID 生成

会话 ID 将不再在生成时进行哈希。此更改带来了以下四个 ini 设置的删除

  • session.entropy_file
  • session.entropy_length
  • session.hash_function
  • session.hash_bits_per_character

以及以下两个 ini 设置的添加

  • session.sid_length - 定义会话 ID 的长度,默认值为 32 个字符,以保持向后兼容性)
  • session.sid_bits_per_character - 定义每个字符要存储的位数(即增加会话 ID 中可使用的字符范围),默认值为 4,以保持向后兼容性

对 INI 文件处理的更改

precision

如果该值设置为 -1,则使用 dtoa 模式 0。默认值仍然为 14。

serialize_precision

如果该值设置为 -1,则使用 dtoa 模式 0。现在默认使用 -1。

gd.jpeg_ignore_warning

php.ini 设置的默认值已更改为 1,因此默认情况下会忽略 libjpeg 警告。

opcache.enable_cli

php.ini 设置的默认值在 PHP 7.1.2 中已更改为 1(启用),并在 PHP 7.1.7 中更改回 0(禁用)。

仅使用 CSPRNG 生成会话 ID

会话 ID 现在将仅使用 CSPRNG 生成。

当允许 null 时,更具信息量的 TypeError 消息

针对 arg_info 类型检查的 TypeError 异常现在将提供更具信息量的错误消息。如果参数类型或返回值类型接受 null(通过具有 null 的默认值或为可为空类型),那么错误消息现在将使用 "必须是 ... 或 null" 或 "必须 ... 或为 null" 的消息来提及这一点。

添加注释

用户贡献的注释 1 个注释

6
Ta7To7
6 年前
请注意,对字符串使用增量/减量运算符是合法的
<?php
$str
= "";
echo ++
$str; // 输出: 1
?>
To Top