Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама
Senior PHP 8+

Які застарілі можливості PHP 8.x варто прибрати з коду вже зараз?

Застарілі (deprecated) можливості ще працюють, але видають попередження й будуть прибрані в наступній мажорній версії. Найпоширеніші в реальному коді:

Динамічні властивості (PHP 8.2):

$user = new User();
$user->temporaryFlag = true;   // Deprecated: Creation of dynamic property

Оголосіть властивість явно. Для класів, яким це справді потрібно, - #[\AllowDynamicProperties]. stdClass і класи з __get/__set не зачіпаються.

Інтерполяція ${var} у рядках (8.2):

"Привіт, ${name}";    // застаріло
"Привіт, {$name}";    // правильно

Неявно nullable параметри (8.4):

function find(Criteria $criteria = null) {}    // застаріло
function find(?Criteria $criteria = null) {}   // правильно

null у параметрах вбудованих функцій, що не приймають null (8.1):

strlen(null);          // Deprecated
trim($request->input('name'));   // якщо поле відсутнє - null
trim($request->input('name') ?? '');

Інше:

  • utf8_encode() / utf8_decode() (8.2) → mb_convert_encoding().
  • Часткова підтримка callable-рядків на кшталт "self::method" (8.2).
  • Неявне приведення float з дробовою частиною до int у ключах і операціях (8.1).
  • E_STRICT як константа (8.4).

Як знайти все одразу:

  • error_reporting(E_ALL) у тестах і перетворення deprecation на помилки тестів.
  • Laravel пише застарілі в окремий канал логів (LOG_DEPRECATIONS_CHANNEL) - увімкнути його на стейджингу й подивитися, що сиплеться під реальним трафіком.
  • Rector автоматично виправляє більшість із цього списку.

Чим раніше прибрати застаріле, тим дешевше наступне оновлення PHP.

Докладніше в документації: Застаріле в PHP 8.2

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання