'PHP 8.3 — це значне оновлення мови PHP. Воно містить багато нових можливостей, таких як явна типізація констант класів, глибоке клонування readonly-властивостей і доповнення до функціоналу генерування випадкових чисел. Як завжди, воно також включає покращення продуктивності, виправлення помилок і загальний рефакторинг.', 'documentation' => 'Документація', 'main_title' => 'Випущено!', 'main_subtitle' => 'PHP 8.3 — це значне оновлення мови PHP.
Воно містить багато нових можливостей, таких як явна типізація констант класів, глибоке клонування readonly-властивостей і доповнення до функціоналу генерування випадкових чисел. Як завжди, воно також включає покращення продуктивності, виправлення помилок і загальний рефакторинг.', 'upgrade_now' => 'Оновіться до PHP 8.3 прямо зараз!', 'readonly_title' => 'Глибоке клонування readonly-властивостей', 'readonly_description' => 'Щоб забезпечити можливість глибокого клонування властивостей, доступних лише для читання, readonly властивості тепер можуть бути модифіковані один раз, за допомогою магічного методу __clone.', 'json_validate_title' => 'Нова функція json_validate()', 'json_validate_description' => 'Функція json_validate() дозволяє перевірити, чи є рядок синтаксично правильним JSON, при цьому є ефективнішою за функціюjson_decode().', 'typed_class_constants_title' => 'Типізовані константи класу', 'override_title' => 'Новий атрибут #[\Override]', 'override_description' => 'Додавши до методу атрибут #[\Override], PHP буде впевнюватися, що метод із такою ж назвою існує у батьківському класі або реалізованому інтерфейсі. Додавання цього атрибута дає можливість зрозуміти, що перевизначення батьківського методу є навмисним і спрощує рефакторинг, оскільки видалення перевизначеного батьківського методу не залишиться непоміченим.', 'randomizer_getbytesfromstring_title' => 'Новий метод Randomizer::getBytesFromString()', 'randomizer_getbytesfromstring_description' => 'Модуль Random, що додано у PHP 8.2, було розширено новим методом генерування випадкових рядків, які складаються лише з певних байтів. Цей метод дозволяє розробнику легко генерувати випадкові ідентифікатори, такі як імена доменів і числові рядки довільної довжини.', 'randomizer_getfloat_nextfloat_title' => 'Нові методи Randomizer::getFloat() і Randomizer::nextFloat()', 'randomizer_getfloat_nextfloat_description' => '

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

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

', 'dynamic_class_constant_fetch_title' => 'Динамічна вибірка констант класу', 'command_line_linter_title' => 'Лінтер командного рядка підтримує можливість перевірки декількох файлів', 'command_line_linter_description' => '

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

', 'new_classes_title' => 'Нові класи, інтерфейси та функції', 'new_dom' => 'Нові методи DOMElement::getAttributeNames(), DOMElement::insertAdjacentElement(), DOMElement::insertAdjacentText(), DOMElement::toggleAttribute(), DOMNode::contains(), DOMNode::getRootNode(), DOMNode::isEqualNode(), DOMNameSpaceNode::contains() і DOMParentNode::replaceChildren().', 'new_intl' => 'Нові методи IntlCalendar::setDate(), IntlCalendar::setDateTime(), IntlGregorianCalendar::createFromDate() і IntlGregorianCalendar::createFromDateTime().', 'new_ldap' => 'Нові функції ldap_connect_wallet() і ldap_exop_sync().', 'new_mb_str_pad' => 'Нова функція mb_str_pad().', 'new_posix' => 'Нові функції posix_sysconf(), posix_pathconf(), posix_fpathconf() і posix_eaccess().', 'new_reflection' => 'Новий метод ReflectionMethod::createFromMethodName().', 'new_socket' => 'Нова функція socket_atmark().', 'new_str' => 'Нові функції str_increment(), str_decrement() і stream_context_set_options().', 'new_ziparchive' => 'Новий метод ZipArchive::getArchiveFlag().', 'new_openssl_ec' => 'Підтримка генерування EC-ключів із власними EC-параметрами у модулі OpenSSL.', 'new_ini' => 'Новий параметр INI zend.max_allowed_stack_size для встановлення максимально дозволеного розміру стека.', 'ini_fallback' => 'php.ini тепер підтримує синтаксис запасних значень/значень за замовчуванням.', 'anonymous_readonly' => 'Анонімні класи тепер доступні лише для читання.', 'bc_title' => 'Застаріла функціональність і зміни у зворотній сумісності', 'bc_datetime' => 'Доречніші винятки у модулі Date/Time.', 'bc_arrays' => 'Присвоєння від\'ємного індексу n до порожнього масиву тепер гарантує, що наступним індексом буде n + 1 замість 0.', 'bc_range' => 'Внесено зміни до функціїrange().', 'bc_traits' => 'Зміни у повторному оголошенні статичних властивостей у трейтах.', 'bc_umultipledecimalseparators' => 'Константу U_MULTIPLE_DECIMAL_SEPERATORS оголошено застарілою, натомість рекомендується використовувати U_MULTIPLE_DECIMAL_SEPARATORS.', 'bc_mtrand' => 'Механізм Mt19937 MT_RAND_PHP оголошено застарілим.', 'bc_reflection' => 'ReflectionClass::getStaticProperties() тепер не повертає значення null.', 'bc_ini' => 'Параметри INI assert.active, assert.bail, assert.callback, assert.exception і assert.warning оголошено застарілими.', 'bc_standard' => 'Можливість виклику функції get_class() і get_parent_class() без аргументів оголошено застарілою.', 'bc_sqlite3' => 'SQLite3: Режим помилок за замовчуванням встановлено на винятки.', 'footer_title' => 'Краща продуктивність, кращий синтаксис, покращена безпека типів.', 'footer_description' => '

Для завантаження початкового коду PHP 8.3 відвідайте сторінку downloads. Двійкові файли Windows можна знайти на сайті PHP for Windows. Перелік змін описано на сторінці ChangeLog.

Посібник з міграції знаходиться у посібнику з PHP. Будь ласка, ознайомтеся з ним, щоб отримати детальніший список нових функцій і несумісних змін.

', ];