PHP Conference Japan 2024

已弃用特性

PHP 核心

使用动态属性

除非类通过使用 #[\AllowDynamicProperties] 属性选择加入,否则创建动态属性已弃用。 stdClass 允许动态属性。使用 __get()/__set() 魔术方法不受此更改的影响。可以通过以下方式解决动态属性弃用警告

  • 声明属性(首选)。
  • 向类添加 #[\AllowDynamicProperties] 属性(也适用于所有子类)。
  • 如果需要将其他数据与不拥有的对象关联,请使用 WeakMap

相对可调用

不被 $callable() 语法接受(但被 call_user_func() 接受)的可调用已弃用。特别是

  • "self::method"
  • "parent::method"
  • "static::method"
  • ["self", "method"]
  • ["parent", "method"]
  • ["static", "method"]
  • ["Foo", "Bar::method"]
  • [new Foo, "Bar::method"]
这不会影响普通方法可调用,例如 "A::method"["A", "method"]

"${var}""${expr}" 样式的插值

"${var}""${expr}" 样式的字符串插值已弃用。分别使用 "$var"/"{$var}""{${expr}}"

MBString

对于所有 MBString 函数,已弃用使用 QPrintBase64UuencodeHTML-ENTITIES“文本编码”。与 MBString 支持的所有其他文本编码不同,这些编码不编码 Unicode 代码点序列,而是编码原始字节序列。当指定其中一个非编码时,大多数 MBString 函数的正确返回值尚不清楚。此外,PHP 对所有这些都有单独的内置实现;例如,可以使用 convert_uuencode()/convert_uudecode() 处理 UU 编码数据。

SPL

内部 SplFileInfo::_bad_state_ex() 方法已弃用。

标准

utf8_encode()utf8_decode() 已弃用。

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top