Нова функціональність

Ядро PHP

Літерний префікс вісімкових цілих чисел

Восьмеричні цілі числа тепер можуть використати явний префікс 0o 0O у цілочисленних літералах, аналогічно двійковим та шістнадцятковим цілочисленним літералам.

Loading...

Розпакування масиву за допомогою рядкових ключів

Добавлена поддержкарозпакування масивів з рядковими ключами

Loading...

Іменований аргумент після розпакування аргументу

Тепер можна вказати іменовані аргументи після розпакування аргументів. наприклад: foo(...$args, named: $arg).

Ключ із повним шляхом при завантаженні файлів

При завантаженні файлів з'явився новий ключ full_path, який містить повний шлях (а не тільки відносний) завантаженого файлу. Призначений для використання разом з HTML-атрибутом webkitdirectory.

Перерахування

Добавлена поддержкаперерахувань

Файбери

Добавлена поддержкафайберів

Callback-функції як об'єкти першого класу

Замикання для callback-функцій тепер можна створювати синтаксисом. myFunc(...), який ідентичний синтаксисуClosure::fromCallable('myFunc')

Зауваження ...является частью синтаксиса, а не пропуском.

Перетин типів

Добавлена поддержкаперетину типів

Застереження

Перетин типів не можна використовувати разом з об'єднанням типів

Тип never

Доданий новий тип значення, що повертається never. Тип свідчить про те, що функція чи викликає exit(), або викидає виняток, або завершується.

newв инициализации класса

Тепер можна використовувати вирази new ClassName() як значення за умовчанням для параметра, статичної змінної, ініціалізаторів глобальних констант і як аргументи атрибутів. Тепер об'єкти також можна передавати в define()

Readonly-властивості

Добавлена поддержкаreadonly-властивостей.

Остаточні константи класу

Добавлена поддержкамодифікатора final щодо констант класу. Крім того, константи інтерфейсу за умовчанням стають перевизначуваними.

CURL

Добавлена опция**CURLOPT_DOH_URL**

Додані параметри для сертифіката BLOB-об'єкта, доступні з libcurl >= 7.71.0:

  • CURLOPT_ISSUERCERT_BLOB
  • CURLOPT_PROXY_ISSUERCERT
  • CURLOPT_PROXY_ISSUERCERT_BLOB
  • CURLOPT_PROXY_SSLCERT_BLOB
  • CURLOPT_PROXY_SSLKEY_BLOB
  • CURLOPT_SSLCERT_BLOB
  • CURLOPT_SSLKEY_BLOB

Добавлен классCURLStringFile, який можна використовувати для надсилання файлу з рядка (string), а не з файлу:

Loading...

FPM

Доданий формат статусу openmetrics. Prometheus може використовувати його для отримання метрик FPM.

Додано новий пул для диспетчера динамічних процесів під назвою pm.max_spawn_rate. Він дозволяє запускати кілька дочірніх процесів швидшими темпами, якщо обрано динамічний pm. Значення за замовчуванням - 32, Яке раніше було фіксованим значенням.

GD

Поддержка Avif теперь доступна с помощьюimagecreatefromavif() і imageavif()якщо libgd був зібраний з підтримкою Avif.

Hash

Следующие функцииhash() hash_file() і hash_init() тепер підтримують додатковий необов'язковий аргумент optionsякий можна використовувати для передачі специфічних для алгоритму даних.

MurmurHash3

Добавлена поддержкаMurmurHash3 за допомогою потокової передачі. Реалізовано такі варіанти:

  • murmur3a, 32-бітовий хеш
  • murmur3c, 128-розрядний хеш для x86
  • murmur3f, 128-розрядний хеш для x64

Початковий стан хешування можна передати за допомогою ключа seed у масиві options, наПриклад:

Loading...

Допустимое начальное значение находится в диапазоне от до певного платформою значення **UINT_MAX**зазвичай - 4294967295

xxHash

Добавлена поддержкаxxHash. Реалізовано такі варіанти:

  • xxh32, 32-bit hash
  • xxh64, 64-bit hash
  • xxh3, 64-bit hash
  • xxh128, 128-bit hash

Початковий стан хешування можна передати за допомогою ключа seed у масиві options, наПриклад:

Loading...

Використання секрету також підтримується шляхом передачі ключа secret у масиві options :

Loading...

Якість секрету користувача має вирішальне значення для якості хешу результату. Для секрету рекомендується використовувати максимально можливу ентропію.

MySQLi

Нова INI-директива mysqli.local_infile_directory

Додано INI-директиву mysqli.local_infile_directory, за допомогою якої можна вказати каталог, з якого дозволено завантаження файлів. Це має сенс тільки якщо mysqli.allow_local_infile не включено, оскільки в цьому випадку дозволено всі каталоги.

Прив'язка параметрів під час виконання

Тепер можна прив'язувати параметри, передавши їх у вигляді масиву mysqli_stmt::execute(). Усі значення будуть прив'язані як рядки. Дозволено лише облікові масиви. Ця нова функція недоступна, якщо MySQLi скомпільовано з libmysqlclient.

Loading...

Новий метод mysqli_result::fetch_column()

Добавленmysqli_result::fetch_column() для вибірки єдиного скалярного значення набору результатів. Новий метод приймає необов'язковий параметр column, що починається з 0, у вигляді цілого числа (int), що вказує з якого стовпця робити вибірку.

Loading...

PDO

Добавлен атрибут**PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY**, який можна використовувати для вказівки каталогу, з якого можна завантажити файли. Це має сенс лише в тому випадку, якщо PDO::MYSQL_ATTR_LOCAL_INFILE не включено, оскільки в цьому випадку дозволено всі каталоги.

PDO_SQLite

Підтримується новий елемент "file:" у DSN-префіксі SQLite, який дозволяє вказувати додаткові прапори. Він не буде працювати, якщо увімкнено опцію open_basedir.

Loading...

POSIX

Додані константи POSIX_RLIMIT_KQUEUES і POSIX_RLIMIT_NPTS. Ці обмеження доступні лише у FreeBSD.

Стандартні функції

fputcsv() тепер приймає новий аргумент eol, який дозволяє визначати послідовність кінця рядка, що настроюється, значення за замовчуванням залишається колишнім - "\n"

SPL

SplFileObject::fputcsv() тепер приймає новий аргумент eol, який дозволяє визначати послідовність кінця рядка, що настроюється, значення за замовчуванням залишається колишнім - "\n"