PHP 8.3 – велике оновлення PHP.

Воно містить безліч нових можливостей, таких як явна типізація констант класів, глибоке клонування readonly-властивостей, а також покращення класу Randomizer. Як завжди, в ньому також покращена продуктивність, виправлені помилки та багато іншого.

Переходьте на PHP 8.3!

Типізовані константи класів RFC

PHP < 8.3

Loading...

PHP 8.3

Loading...

Динамічне отримання констант класу RFC

PHP < 8.3

Loading...

PHP 8.3

Loading...

Новий атрибут #[\Override] RFC

PHP < 8.3

Loading...

PHP 8.3

Loading...

Якщо додати метод атрибут #[\Override], то PHP переконається, що метод із таким самим ім'ям існує в батьківському класі або в реалізованому інтерфейсі. Додавання атрибуту дає зрозуміти, що перевизначення батьківського методу є навмисним, а також спрощує рефакторинг, оскільки видалення перевизначеного батьківського методу буде виявлено.

Глибоке клонування readonly-властивостей RFC

PHP < 8.3

Loading...

PHP 8.3

Loading...

Властивості, доступні лише для читання (readonly) тепер можуть бути змінені один раз за допомогою магічного методу __clone для забезпечення можливості глибокого клонування readonly-властивостей.

Нова функція json_validate() RFC Документація

PHP < 8.3

Loading...

PHP 8.3

Loading...

Функція json_validate() дозволяє перевірити, чи є рядок синтаксично коректним JSON, при цьому він більш ефективний, ніж функція json_decode().

Новий метод Randomizer::getBytesFromString() RFC Документація

PHP < 8.3

Loading...

PHP 8.3

Loading...

Модуль Random, Доданий в PHP 8.2, був доповнений новим методом генерації випадкових рядків, що складаються тільки з певних байтів. Цей метод дозволяє легко генерувати випадкові ідентифікатори, наприклад, домени імена і числові рядки довільної довжини.

Нові методи Randomizer::getFloat() і Randomizer::nextFloat() RFC Документація

PHP < 8.3

Loading...

PHP 8.3

Loading...

Через обмежену точність і неявне округлення чисел з плаваючою точкою генерація незміщеного числа, що лежить у певному інтервалі, є нетривіальним завданням, а рішення користувача можуть давати зміщені результати або числа, що виходять за межі необхідного діапазону.

Клас Randomizer був розширений двома методами, що дозволяють генерувати випадкові числа з плаваючою точкою незміщеним чином. Метод Randomizer::getFloat() використовує алгоритм γ-секції, який був опублікований в Drawing Random Floating-Point Numbers from an Interval. Frédéric Goualard, ACM Trans. Model. Comput. Simul., 32:3, 2022.

Лінтер командного рядка підтримує декілька файлів PR Документація

PHP < 8.3

php -l foo.php bar.php
No syntax errors detected in foo.php

PHP 8.3

php -l foo.php bar.php
No syntax errors detected in foo.php
No syntax errors detected in bar.php

Лінтер командного рядка тепер приймає кілька імен для перевірки файлів.

Нові класи, інтерфейси та функції

Застаріла функціональність та зміни у зворотній сумісності

  • Більше відповідні винятки в модулі Date/Time.
  • Присвоєння негативного індексу n порожньому масиву тепер гарантує, що наступним індексом буде n + 1, а не 0.
  • Зміни до функцій range().
  • Зміни у повторному оголошенні статичних властивостей у трейтах.
  • Константа U_MULTIPLE_DECIMAL_SEPERATORS оголошено застарілою, замість неї рекомендується використовувати константу U_MULTIPLE_DECIMAL_SEPARATORS.
  • Варіант Mt19937 MT_RAND_PHP оголошено застарілим.
  • ReflectionClass::getStaticProperties() тепер не повертає значення null.
  • Параметри INI assert.active, assert.bail, assert.callback, assert.exception і assert.warning оголошено застарілими.
  • Виклик функції get_class() і get_parent_class() без аргументів оголошено застарілим.
  • SQLite3: режим помилок за замовчуванням встановлено на винятки.

Вище продуктивність, краще синтаксис, надійніша система типів.

Переходьте на PHP 8.3!

Щоб завантажити вихідний код PHP 8.3, відвідайте сторінку Downloads. Бінарні файли Windows знаходяться на сайті PHP for Windows. Список змін перераховано на сторінці ChangeLog.

Посібник з міграції у розділі документації. Ознайомтеся з ним, щоб дізнатися про всі нові можливості та зміни, що стосуються зворотної сумісності.