CascadiaPHP 2024

Другие изменения

Изменения в модулях SAPI

Apache2Handler

Модуль PHP был переименован из php7_module в php_module.

Изменённые функции

Reflection

Результаты ReflectionClass::getConstants() и ReflectionClass::getReflectionConstants() теперь можно фильтровать с помощью нового параметра filter. Добавлены три новые константы для работы с ним:

Стандартные функции

Математические функции abs(), ceil(), floor() и round() теперь правильно учитывают объявление strict_type. Ранее они приводили первый аргумент к числовому значению даже в режиме строгой типизации.

Zip

Другие изменения в модулях

CURL

  • Для работы модуля CURL теперь требуется как минимум libcurl 7.29.0.

  • Устаревший параметр version функции curl_version() был удалён.

Дата и время

DatePeriod теперь реализует IteratorAggregate (вместо Traversable).

DOM

DOMNamedNodeMap и DOMNodeList теперь реализуют IteratorAggregate (вместо Traversable).

Intl

IntlBreakIterator и ResourceBundle теперь реализуют IteratorAggregate (вместо Traversable).

Enchant

Модуль enchant теперь использует libenchant-2 по умолчанию, если возможно. libenchant версии 1 все ещё поддерживается, но устарел и может быть удалён в будущем.

GD

  • Параметр num_points для imagepolygon(), imageopenpolygon() и imagefilledpolygon() теперь является необязательным, то есть эти функции могут быть вызваны с помощью трёх или четырёх параметров. Если параметр опущен, он рассчитывается как count($points)/2.

  • Добавлена функция imagegetinterpolation() для получения текущего метода интерполяции.

JSON

Модуль JSON больше нельзя отключить, теперь он является неотъемлемой частью любой сборки PHP, как и модуль date.

MBString

Таблицы данных Unicode обновлены до версии 13.0.0.

PDO

PDOStatement теперь реализует IteratorAggregate (вместо Traversable).

LibXML

Минимальная необходимая версия libxml - 2.9.0. Это означает, что загрузка внешних объектов по умолчанию теперь отключена и поэтому не требуется дополнительных шагов для защиты от XXE-атак.

MySQLi / PDO MySQL

  • Если mysqlnd не используется (это вариант по умолчанию и рекомендуется), минимальная поддерживаемая версия libmysqlclient теперь 5.5.

  • mysqli_result теперь реализует IteratorAggregate (вместо Traversable).

PGSQL / PDO PGSQL

Для модулей PGSQL и PDO PGSQL теперь требуется как минимум libpq 9.1.

Readline

Вызов readline_completion_function() перед запуском интерактивной подсказки (например, в auto_prepend_file) теперь отменяет функцию завершения интерактивной подсказки по умолчанию. Ранее readline_completion_function() работала только при вызове после запуска интерактивной подсказки.

SimpleXML

SimpleXMLElement теперь реализует RecursiveIterator и включает в себя функционал SimpleXMLIterator. SimpleXMLIterator является пустым расширением SimpleXMLElement.

Изменения в обработке INI-файлов

  • com.dotnet_version - это новая INI-директива для выбора версии платформы .NET, которая будет использоваться для объектов dotnet.

  • zend.exception_string_param_max_len - это новая INI-директива для установки максимальной длины строки в аргументе строковой трассировки стека.

EBCDIC

Цели EBCDIC больше не поддерживаются, хотя маловероятно, что они до сих пор работали.

Производительность

  • Компилятор Just-In-Time (JIT) был добавлен в модуль opcache.

  • array_slice() в массиве без расстояний между элементами больше не будет сканировать весь массив, чтобы найти начальное смещение. Это может значительно сократить время выполнения функции с большими смещениями и малой длиной.

  • strtolower() теперь использует реализацию SIMD в локали "C" LC_CTYPE (которая используется по умолчанию).

add a note

User Contributed Notes 1 note

up
-2
barry dot nelson at amobiledevice dot com
1 year ago
If loading the PHP8 apache module on SuSe Linux, the configuration scripts incorrectly try to load it with automatically generated load statement of:
LoadModule php8_module /usr/lib64/apache2/mod_php8.so
This does not work, the patch below fixes the conf file generator...

--- /usr/share/apache2/get_module_list 2023-01-14 22:41:49.586825349 -0500
+++ /usr/share/apache2/get_module_list 2023-01-14 22:42:02.171600410 -0500
@@ -91,4 +91,8 @@
esac

+ if [ "$module_id" = "php8_module" ]; then
+ module_id="php_module"
+ fi
+
if [[ -f $module_path ]]; then
printf "LoadModule %-30s %s\n" $module_id $module_path >&3
To Top