'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.
Линтер командной строки теперь принимает несколько имён файлов для проверки.
', '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.
Руководство по миграции доступно в разделе документации. Ознакомьтесь с ним, чтобы узнать обо всех новых возможностях и изменениях, затрагивающих обратную совместимость.
', ];