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

### Ядро 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() объявлены устаревшими.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open