P
P
PHP 7 详解
Search
K

补充*其他的变更

参考:Other changes

其他的变更

使用无效字符串进行算术的注意和警告

引入了新的E_WARNING和E_NOTICE错误时无效的字符串强制使用运营商预计数字(+ - * / * * % < < > > | & ^)或其等价物。当字符串以数字值开始时,会发出一个E_NOTICE,但是它包含后面的非数值字符,当字符串不包含数值时,会发出一个E_WARNING。
<?php
'1b' + 'something';
以上例程会输出:
Notice: A non well formed numeric value encountered in %s on line %d

警告octal转义序列溢出

以前,3 octet的八进制字符串转义序列将会悄无声息地溢出。现在,它们仍然会溢出,但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将不再被哈希生成。有了这一变化,就会导致以下4个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的默认值。在PHP 7.1.2中,ini设置已经更改为1(启用)。

只使用CSPRNG的会话ID生成

会话id现在只能用CSPRNG生成。

当允许NULL时,更多的信息类型错误消息

TypeErrorexceptions for arg_info type checks will now provide more informative error messages. If the parameter type or return type acceptsNULL(by either having a default value ofNULLor being a nullable type), then the error message will now mention this with a message of "must be ... or null" or "must ... or be null."