Застаріла функціональність
Ядро 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() оголошено застарілими.