категории | RSS

Вышел PHP 8.3

Состоялся релиз языка программирования PHP 8.3, включая сборки для ОС Windows. В новую ветку добавлены обновления, а также серия изменений, которые нарушают совместимость с предыдущими версиями.

Согласно данным OpenNET, основные изменения и дополнения в PHP 8.3 включают в себя:

во время клонирования классов предоставлена возможность повторной инициализации свойств с атрибутом "readonly". Переопределение readonly-свойств допускается только внутри функции "__clone";

предоставлена возможность использования констант с указанием типа в классах, типажах и перечислениях;

добавлена поддержка атрибута "#[Override]", при помощи которого разработчик может информировать интерпретатор о том, что отмеченный метод переопределяет какой-то родительский метод. В случае если переопределения не будет интерпретатор выведет ошибку;

изменена обработка отрицательных значений в качестве индекса массива. Например, при добавлении в пустой массив элемента с номером "-5" и добавлении ещё одного элемента, раньше второй элемент сохранялся с индексом "0", а начиная с версии PHP 8.3 будет сохраняться с индексом "-4". $array = []; $array[-5] = 'a'; $array[] = 'b'; var_export($array); // Было array (-5 => 'a', 0 => 'b') // Стало array (-5 => 'a', -4 => 'b');

добавлена возможность создания анонимных классов в режиме только для чтения;

добавлена функция json_validate() для быстрой проверки соответствия строки формату JSON без выполнения операций декодирования;

в класс Randomizer, предоставляющий высокоуровневый API для генерации псеводослучайных чисел и последовательностей, добавлены новые методы: getBytesFromString для формирования строки заданного размера, использующей в случайном порядке символы, присутствующие в другой строке; getFloat и nextFloat для генерации случайного числа с плавающей запятой, укладывающегося в указанный диапазон;

добавлена возможность извлечения констант, используя синтаксис динамических классов;

добавлена генерация отдельных исключений (DateMalformedIntervalStringException, DateInvalidOperationException, DateRangeError) в случае проблем, возникающих в операциях работы с датами и временем;

улучшена обработка ошибок, возникающих в процессе разбора сериализированных данных в функции unserialize(). В случае проблем unserialize() теперь выдаёт код E_WARNING вместо E_NOTICE;

внесены изменения в функцию range(). Обеспечена генерация исключения при попытке передачи объектов, ресурсов или массивов в переменных, определяющих границы диапазона, а также при указании отрицательного значения в параметре $step или неопределённого значения в любом параметре. Обеспечен вывод списка символов при указании строк вместо чисел (например, "range('5', 'z')");

изменено поведение типажей со статическими свойствами, которые теперь переопределяют статические свойства, унаследованные из родительского класса;

добавлены настройки для защиты от переполнения стека. В ini-файл добавлены директивы zend.max_allowed_stack_size и zend.reserved_stack_size, определяющие максимально разрешённый и зарезервированный размер стека. Программа будет завершаться ошибкой при приближении к исчерпанию стека, когда стек заполнен больше, чем на разницу между значениями zend.max_allowed_stack_size и zend.reserved_stack_size (выполнение будет остановлено не доводя ситуацию до возникновения segmentation fault). По умолчанию значение zend.max_allowed_stack_size выставлено в 0 (0 - размер определяется автоматически, для отключения ограничения можно выставить -1);

добавлены новые POSIX-функции posix_sysconf(), posix_pathconf(), posix_fpathconf() и posix_eaccess();

добавлена функция mb_str_pad, представляющая собой аналог строковой функции str_pad(), рассчитанный на работу с многобайтовыми кодировками, такими как UTF-8;

расширены возможности функций array_sum(), array_product(), posix_getrlimit(), gc_status(), class_alias(), mysqli_poll(), array_pad() и proc_get_status();

объявлена устаревшей возможность передачи отрицательного значения $widths в mb_strimwidth(). Удалена константа NumberFormatter::TYPE_CURRENCY. Прекращена поддержка вызова функции ldap_connect() с двумя параметрами $host и $port. Удалена настройка opcache.consistency_checks.

В июле 2020 года Microsoft предупредила сообщество разработчиков PHP, что компания не собирается заниматься поддержкой новых версий PHP, включая 8.0 и выше, для Windows. Представитель сообщества разработчиков PHP ответил Microsoft, что сообщество глубоко признательно компании за проделанную их специалистами работу по поддержке PHP на Windows на протяжении многих лет. Также в сообществе разработчиков PHP сообщили, что примут все необходимые меры, чтобы продолжить организацию поддержки PHP 8.0 и выше для Windows своими силами.



Источник новости: habr.com

DimonVideo
2023-11-24T18:50:02Z

Здесь находятся
всего 0. За сутки здесь было 0 человек
Яндекс.Метрика