Устаревшая функциональность

Ядро 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

Использование кодировок текста QPrint, Base64, Uuencode и HTML-ENTITIES объявлено устаревшим для всех функций MBString. В отличие от остальных текстовых кодировок, поддерживаемых MBString, эти кодировки не кодируют последовательность кодовых точек Unicode, а только последовательность необработанных байтов. Неясно, какими должны быть правильные возвращаемые значения для большинства функций MBString, если указана одна из этих кодировок. Более того, в PHP есть встроенные реализации всех этих кодировок; например, UU-закодированные данные можно обрабатывать с помощью функций convert_uuencode()/convert_uudecode().

SPL

Внутренний метод SplFileInfo::_bad_state_ex() объявлен устаревшим.

Стандартные функции

Функции utf8_encode() и utf8_decode() объявлены устаревшими.

To Top