(\?[^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() 已弃用。请将 0 偏移量和编码作为第四个参数传递。
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);
?>
由于 glibc 中的上游弃用,socket_addrinfo_lookup() 的 AI_IDN_ALLOW_UNASSIGNED
和 AI_IDN_USE_STD3_ASCII_RULES
标志已弃用。