PHP7.1特性
PHP7.1函数相关变更
list()现在支持键名
现在list()
和它的新的*[]*语法支持在它内部去指定键名。这意味着它可以将任意类型的数组 都赋值给一些变量(与短数组语法类似)
1 |
|
禁止动态调用的函数
如下:
- assert() - with a string as the first argument
- compact()
- extract()
- func_get_args()
- func_get_arg()
- func_num_args()
- get_defined_vars()
- mb_parse_str() - with one arg
- parse_str() - with one arg
尾随的-
代表禁止动态调用的条件。func_get_args
等几个函数测试了下好像并没有禁止动态调用?不太懂。
unserialize
对allowed_classes
参数严格化,如果对其传入的值是布尔值和数组之外的内容,unserialize
将返回False和E_WARNING
getenv可以不需要传入参数
getenv()
可以不传入任何参数。 如果不传入参数,此函数会以关联数组的形式 返回所有的环境变量。
parse_url支持RFC3986
parse_url()
更加严格的限制, 并且提供对 RFC3986 的支持。
session_start将返回false
session_start()
当无法成功初始化会话的时候,返回 FALSE, 并且不会初始化超级变量 $_SESSION
。
但是我测试的时候发现,PHP7.0已经会返回False了(Win+PHP7.12nts
1 |
|
(废弃)两个函数的Eval选项
mb_ereg_replace()和mb_eregi_replace()
(废弃)ext/mcrypt
PHP7.1语法相关的变更
(增加)短数组
短数组语法[]
现在作为list()
语法的一个备选项,可以用于将数组的值赋给一些变量(包括在foreach中)。
1 |
|
(增加)支持为负的字符串偏移量
现在所有支持偏移量的字符串操作函数 都支持接受负数作为偏移量,包括通过[]
或{}
操作字符串下标。在这种情况下,一个负数的偏移量会被理解为一个从字符串结尾开始的偏移量。
1 |
|
字符串也同样支持
1 |
|
(增加)当传递参数过少时将抛出错误
在过去如果我们调用一个用户定义的函数时,提供的参数不足,那么将会产生一个警告(warning)。 现在,这个警告被提升为一个错误异常(Error exception),意味着PHP会中断执行。这个变更仅对用户定义的函数生效, 并不包含内置函数。例如:
1 |
|
引用数组元素创建元素的顺序更改
1 |
|
JSON编码和解码
解码一个空键值将会解析为一个空属性名,而之前会解析为_empty_
1 |
|
杂项
可为空(Nullable)类型 ¶
Void 函数 ¶
类常量可见性 ¶
iterable 伪类 ¶
多异常捕获处理 ¶
Invalid class, interface, and trait names ¶
Numerical string conversions now respect scientific notation ¶
Fixes to mt_rand() algorithm ¶
rand() aliased to mt_rand() and srand() aliased to mt_srand() ¶
Disallow the ASCII delete control character in identifiers ¶
在不完整的对象上不再调用析构方法 ¶
call_user_func()不再支持对传址的函数的调用 ¶
ini配置项移除 ¶
Sort order of equal elements
Lexically bound variables cannot reuse names ¶
PHP7.1特性
https://theganlove.github.io/2024/08/31/PHP7-1特性/