Гайды по версиям PHP

Прослеживаем эволюцию языка от PHP 5.3 до актуальных релизов PHP 8.x — с рабочими примерами и чек-листами миграции.

  • PHP 8.5 — Конвейеры и ужесточение платформы

    Оператор `|>`, `#[\NoDiscard]`, замыкания в константных выражениях, ext/uri, более строгие filter/PDO/Opcache.

  • PHP 8.4 — Property hooks и lazy objects

    Хуки свойств, асимметричная видимость, lazy objects, новый API `Dom\*`, `#[Deprecated]` — и что почистить до следующего шага.

  • PHP 8.3 — Точность и JSON

    `#[Override]`, типизированные константы классов, `json_validate`, `str_increment` / `str_decrement` и мелкие runtime-изменения под нагрузкой.

  • PHP 8.2 — Типы и динамические свойства

    Readonly-классы, DNF-типы, автономные `null`/`false`/`true`, `#[SensitiveParameter]`, расширение Random, deprecations динамических свойств.

  • PHP 8.1 — Перечисления и readonly

    Enums, readonly-свойства, fibers, пересечение типов, first-class callable и ужесточения относительно 8.0.

  • PHP 8.0 — Крупное обновление языка

    Именованные аргументы, match, атрибуты, JIT, union-типы, nullsafe `?->` и более строгое поведение стандартной библиотеки.

  • PHP 7.4 — Последний минор в линейке 7.x

    Типизированные свойства, стрелочные функции, FFI, preload OPcache, пара `__serialize` / `__unserialize` и типичные ловушки BC.

  • PHP 7.3 — Полировка синтаксиса перед 7.4

    Гибкий heredoc/nowdoc, хвостовые запятые в вызовах, `JsonException`, `is_countable`, `array_key_first`/`last`, PCRE2, Argon2id и тонкие BC (`ArrayAccess`, ссылки, `continue` в `switch`).

  • PHP 7.2 — Тип object и libsodium

    Подсказка `object`, расширение типов параметров, Sodium в ядре, LDAP EXOP, addrinfo sockets — предупреждения `count()`/`get_class(null)` и mcrypt в PECL.

  • PHP 7.1 — Nullable, void, iterable

    `?Type`, `void`, `iterable`, видимость констант, multi-catch, `list()` с ключами — плюс `ArgumentCountError`, удалённые session INI и BC строк.

  • PHP 7.0 — Разрыв с PHP 5

    Скалярные и возвращаемые типы, `??` и `<=>`, анонимные классы, `Closure::call`, генераторы, `random_bytes`, фильтруемый `unserialize` и `Throwable`/BC эпохи 5.x.

  • PHP 5.6 — Вариадика и `**`

    Вариадический `...`, распаковка аргументов, возведение `**`, `use function`/`const`, константные выражения — последняя остановка перед скачком движка PHP 7.

  • PHP 5.5 — Генераторы и `password_*`

    Генераторы `yield`, `finally`, API `password_hash`, `array_column`, `ClassName::class` — и тонкая BC у `foreach`/`list()`, которую стоит прогнать регрессией.

  • PHP 5.4 — Трейты и `[]`

    Трейты, краткий синтаксис массивов `[]`, подсказка `callable`, `$this` в замыканиях, встроенный веб-сервер — удалены magic quotes и `register_globals`, deprecated `mysql`.

  • PHP 5.3 — Пространства имён и замыкания

    Namespaces, `use`, позднее статическое связывание, замыкания, `goto`, NOWDOC, опциональный GC циклов, Phar — и BC (новые ключевые слова, deprecation `ereg*`) на пути от привычек PHP 4.