PHP 8.2 – велике оновлення PHP.
Воно містить безліч нових можливостей, включаючи readonly-класи, самостійні типи null, false і true, застарілі динамічні властивості, покращення продуктивності та багато іншого.
Readonly-класи RFC Документація
PHP < 8.2
Loading...
PHP 8.2
Loading...
Типи у вигляді диз'юнктивної нормальної форми (ДНФ) RFC Документація
PHP < 8.2
Loading...
PHP 8.2
Loading...
ДНФ дозволяє поєднати об'єднання і перетини типів, при цьому обов'язково типи перетину слід згрупувати дужками.
Самостійні типи null
false
і true
RFC RFC
PHP < 8.2
Loading...
PHP 8.2
Loading...
Новий модуль "Random" RFC RFC Документація
PHP 8.2
Loading...
Модуль "random" пропонує новий об'єктно-орієнтований API для створення випадкових чисел. Замість використання глобального генератора випадкових чисел (ГВЧ) на базі алгоритму вихору Мерсенна, в об'єктно-орієнтованому API є кілька ГВЧ, представлених окремими класами (як реалізації інтерфейсу Engine), які зберігають внутрішній стан, дозволяючи створювати кілька незалежних послідовностей випадкових чисел.
Класс\Random\Randomizer
представляє високорівневий інтерфейс використання движків для генерації випадкового цілого числа, перемішування масиву або рядку, вибору випадкових ключів масиву і багато іншого.
Константи у трейтах RFC Документація
PHP 8.2
Loading...
Не можна отримати доступ до константи через ім'я трейту, але можна через клас, який використовує цей трейт.
Динамічні властивості оголошені застарілими RFC Документація
PHP < 8.2
Loading...
PHP 8.2
Loading...
Щоб допомогти уникнути помилок й міспрінтів, більше не рекомендується визначати динамічні властивості, тільки якщо сам клас явно не дозволить це за допомогою атрибуту #[\AllowDynamicProperties]
. В примірниках stdClass
як і раніше, можна використовувати динамічні властивості.
Ця зміна не впливає на використання магічних методів __get
/ __set
Нові класи, інтерфейси та функції
- Нова функція
mysqli_execute_query
і методmysqli::execute_query
- Нові атрибути
#[\AllowDynamicProperties]
і#[\SensitiveParameter]
- Нові методи
ZipArchive::getStreamIndex
ZipArchive::getStreamName
іZipArchive::clearError
- Нові методи
ReflectionFunction::isAnonymous
іReflectionMethod::hasPrototype
- Нові функції
curl_upkeep
memory_reset_peak_usage
ini_parse_quantity
libxml_get_external_entity_loader
sodium_crypto_stream_xchacha20_xor_ic
openssl_cipher_key_length
Застаріла функціональність та зміни у зворотній сумісності
- Інтерполяції рядків виду
${}
слід уникати. - Не рекомендується використовувати функції
utf8_encode
іutf8_decode
- У методів
DateTime::createFromImmutable
іDateTimeImmutable::createFromMutable
заданий попередній тип значення, що повертаєstatic
- Модулі
ODBC
іPDO_ODBC
екранують ім'я користувача та пароль. - При роботі функції
strtolower
іstrtoupper
тепер не зважають на локаль. - Методи
SplFileObject::getCsvControl
SplFileObject::fflush
SplFileObject::ftell
SplFileObject::fgetc
іSplFileObject::fpassthru
посилюють свою сигнатуру. - У метода
SplFileObject::hasChildren
попередній тип значення, що повертається заданий якfalse
- У метода
SplFileObject::getChildren
попередній тип значення, що повертається заданий якnull
- Внутренний метод
SplFileInfo::_bad_state_ex
оголошено застарілим.
Вище продуктивність, краще синтаксис, надійніша система типів.
Щоб завантажити вихідний код PHP 8.2, відвідайте сторінку Downloads. Бінарні файли Windows знаходяться на сайті PHP for Windows. Список змін можна знайти на сторінці ChangeLog
Руководство по міграции у розділі документації. Ознайомтеся з ним, щоб дізнатися про всі нові можливості та зміни, що стосуються зворотної сумісності.