Восьмеричные целые числа теперь могут использовать явный префикс
    0o/0O в целочисленных литералах,
    аналогично двоичным и шестнадцатеричным целочисленным литералам.
    
<?php
014;  // Восьмеричный литерал без префикса
0o14; // Восьмеричный литерал с префиксом
?>Добавлена поддержка распаковки массивов со строковыми ключами.
<?php
$arr1 = [1, 'a' => 'b'];
$arr2 = [...$arr1, 'c' => 'd']; //[1, 'a' => 'b', 'c' => 'd']
?>Теперь можно указать именованные аргументы после распаковки аргументов. например: foo(...$args, named: $arg).
    При загрузке файлов появился новый ключ full_path,
    который содержит полный путь (а не только относительный) загруженного файла.
    Предназначен для использования вместе с HTML-атрибутом webkitdirectory.
   
Добавлена поддержка перечислений.
Добавлена поддержка файберов.
    Замыкания для callback-функций теперь можно создавать с помощью синтаксиса myFunc(...),
    который идентичен синтаксису Closure::fromCallable('myFunc').
    
   
Замечание:
...является частью синтаксиса, а не пропуском.
Добавлена поддержка пересечения типов.
Пересечения типов нельзя использовать вместе с объединением типов.
Добавлен новый тип возвращаемого значения never. Тип указывает на то, что функция либо вызывает exit(), либо выбрасывает исключение, либо не завершается.
new в инициализации класса
    Теперь можно использовать выражения new ClassName() в качестве
    значения по умолчанию для параметра, статической переменной,
    инициализаторов глобальных констант и в качестве аргументов атрибутов.
    Теперь объекты также можно передавать в define().
    
   
Добавлена поддержка readonly-свойств.
Добавлена поддержка модификатора final при определении констант класса. Кроме того, константы интерфейса по умолчанию становятся переопределяемыми.
   Добавлена опция 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), а не из файла:
<?php
$file = new CURLStringFile($data, 'filename.txt', 'text/plain');
curl_setopt($curl, CURLOPT_POSTFIELDS, ['file' => $file]);
?>Добавлен формат статуса openmetrics. Prometheus может использовать его для получения метрик FPM.
   Добавлен новый пул для диспетчера динамических процессов под названием pm.max_spawn_rate.
   Он позволяет запускать несколько дочерних процессов более быстрыми темпами, если выбран динамический pm.
   Значение по умолчанию - 32, которое ранее было фиксированным значением.
  
Поддержка Avif теперь доступна с помощью imagecreatefromavif() и imageavif(), если libgd был собран с поддержкой Avif.
   Следующие функции hash(), hash_file()
   и hash_init() теперь поддерживают дополнительный необязательный аргумент
   options, который можно использовать для передачи специфичных для алгоритма данных.
  
    Добавлена поддержка MurmurHash3 с поддержкой потоковой передачи.
    Реализованы следующие варианты:
   
    Начальное состояние хеширования можно передать с помощью ключа seed
    в массиве options, например:
    
<?php
$h = hash("murmur3f", $data, options: ["seed" => 42]);
echo $h, "\n";
?>0
    до определённого платформой значения UINT_MAX, обычно - 4294967295.
   
  
    Добавлена поддержка xxHash.
    Реализованы следующие варианты:
   
    Начальное состояние хеширования можно передать с помощью ключа seed
    в массиве options, например:
    
<?php
$h = hash("xxh3", $data, options: ["seed" => 42]);
echo $h, "\n";
?>secret в массиве options:
    <?php
$h = hash("xxh3", $data, options: ["secret" => "как минимум 136 байт секрета"]);
echo $h, "\n";
?>mysqli.local_infile_directoryДобавлена INI-директива mysqli.local_infile_directory, с помощью которой можно указать каталог, из которого разрешена загрузка файлов. Это имеет смысл, только если mysqli.allow_local_infile не включён, поскольку в этом случае разрешены все каталоги.
Теперь можно привязывать параметры, передав их в виде массива в mysqli_stmt::execute(). Все значения будут привязаны как строки. Разрешены только списочные массивы. Эта новая функция недоступна, если MySQLi скомпилирован с libmysqlclient.
<?php
$stmt = $mysqli->prepare('INSERT INTO users(id, name) VALUES(?,?)');
$stmt->execute([1, $username]);
?>
    Добавлен mysqli_result::fetch_column() для
    выборки единственного скалярного значения из набора результатов.
    Новый метод принимает необязательный параметр column,
    начинающийся с 0, в виде целого числа (int), указывающий из какого столбца производить выборку.
    
    
<?php
$result = $mysqli->query('SELECT username FROM users WHERE id = 123');
echo $result->fetch_column();
?>
   Добавлен атрибут PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY,
   который можно использовать для указания каталога, из которого могут быть загружены файлы.
   Это имеет смысл только в том случае, если PDO::MYSQL_ATTR_LOCAL_INFILE не включён,
   поскольку в этом случае разрешены все каталоги.
  
   Поддерживается новый элемент "file:" в DSN-префиксе SQLite,
   который позволяет указывать дополнительные флаги.
   Он не будет работать, если включена опция open_basedir.
   
<?php
new PDO('sqlite:file:path/to/sqlite.db?mode=ro')
?>
   Добавлены константы POSIX_RLIMIT_KQUEUES и POSIX_RLIMIT_NPTS.
   Эти ограничения доступны только во FreeBSD.
  
   fputcsv() теперь принимает новый аргумент eol,
   который позволяет определять настраиваемую последовательность конца строки,
   значение по умолчанию остаётся прежним - "\n".
  
   SplFileObject::fputcsv() теперь принимает новый аргумент
   eol, который позволяет определять настраиваемую последовательность конца строки,
   значение по умолчанию остаётся прежним - "\n".
  
