(\?[^php]).*(\:).*(\?).*(\:[^=])
以上正则表达式可以帮助其他人找到嵌套的三元运算符
嵌套三元运算必须显式使用括号来规定运算的顺序。以前,在不使用括号的情况下,左结合性在大多数情况下不会产生预期的行为。
<?php
1 ? 2 : 3 ? 4 : 5; // 已弃用
(1 ? 2 : 3) ? 4 : 5; // 正确
1 ? 2 : (3 ? 4 : 5); // 正确
?>
当嵌套到中间操作数时,不需要括号,因为这始终是明确的,并且不受结合性的影响
1 ? 2 ? 3 : 4 : 5 // 正确
使用花括号访问数组和字符串偏移量的语法已弃用。请使用 $var[$idx]
而不是 $var{$idx}
。
$this
时解除绑定 $this
已弃用解除绑定使用 $this
的非静态闭包的 $this
。
parent
关键字在没有父类的情况下在没有父类的类中使用 parent
已弃用,将来会抛出编译时错误。目前,只有在运行时访问父类时才会生成错误。
已弃用 allow_url_include ini 指令。启用它会在启动时生成弃用通知。
向 base_convert()、bindec()、octdec() 和 hexdec() 传递无效字符现在会生成弃用通知。结果仍然会像无效字符不存在一样计算。继续允许前导和尾随空格,以及 0x 类型的前缀(取决于基数)。
已弃用在对象上使用 array_key_exists()。相反,应使用 isset() 或 property_exists()。
已弃用 get_magic_quotes_gpc() 和 get_magic_quotes_runtime() 函数。它们始终返回 false
。
已弃用 convert_cyr_string() 函数。它可以用 mb_convert_string()、iconv() 或 UConverter 之一替换。
已弃用 money_format() 函数。它可以用 intl NumberFormatter 功能替换。
已弃用 ezmlm_hash() 函数。
已弃用 restore_include_path() 函数。它可以用 ini_restore('include_path')
替换。
以相反的顺序向 implode() 传递参数已弃用,请使用 implode($glue, $parts)
而不是 implode($parts, $glue)
。
已弃用使用不区分大小写的常量注册导入类型库。
已弃用 FILTER_SANITIZE_MAGIC_QUOTES
,请使用 FILTER_SANITIZE_ADD_SLASHES
代替。
向 mb_ereg_replace() 传递非字符串模式已弃用。目前,非字符串模式被解释为 ASCII 代码点。在 PHP 8 中,模式将被解释为字符串。
向 mb_strrpos() 传递编码作为第 3 个参数已弃用。改为传递 0 偏移量,并将编码作为第 4 个参数传递。
已弃用 ldap_control_paged_result_response() 和 ldap_control_paged_result()。分页控件可以与 ldap_search() 一起发送。
对 ReflectionType::__toString() 的调用现在会生成弃用通知。自 PHP 7.1 以来,此方法在文档中已弃用,取而代之的是 ReflectionNamedType::getName(),但由于技术原因没有抛出弃用通知。
所有 Reflection 类上的 export()
方法已弃用。构造一个 Reflection 对象并将其转换为字符串。
<?php
// ReflectionClass::export(Foo::class, false) 为:
echo new ReflectionClass(Foo::class), "\n";
// $str = ReflectionClass::export(Foo::class, true) 为:
$str = (string) new ReflectionClass(Foo::class);
?>
已弃用 socket_addrinfo_lookup() 的 AI_IDN_ALLOW_UNASSIGNED
和 AI_IDN_USE_STD3_ASCII_RULES
标志,因为 glibc 中存在上游弃用。