'PHP 8.3 — большое обновление языка PHP. Оно содержит множество новых возможностей, таких как явная типизация констант классов, глубокое клонирование readonly-свойств, а также улучшения класса Randomizer. Как всегда, в нём также улучшена производительность, исправлены ошибки и многое другое.', 'documentation' => 'Документация', 'main_title' => 'выпущен!', 'main_subtitle' => 'PHP 8.3 — большое обновление языка PHP.
Оно содержит множество новых возможностей, таких как явная типизация констант классов, глубокое клонирование readonly-свойств, а также улучшения класса Randomizer. Как всегда, в нём также улучшена производительность, исправлены ошибки и многое другое.', 'upgrade_now' => 'Переходите на PHP 8.3!', 'readonly_title' => 'Глубокое клонирование readonly-свойств', 'readonly_description' => 'Свойства, доступные только для чтения (readonly) теперь могут быть изменены один раз с помощью магического метода __clone для обеспечения возможности глубокого клонирования readonly-свойств.', '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() использует алгоритм γ-секции, который был опубликован в 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.

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

', ];