Гайди з версій 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

    Типізовані властивості, arrow functions, 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.