八進位整數現在可以在整數字面值中使用明確的 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
鍵值,其中包含上傳檔案的完整路徑(而不仅仅是檔名)。這旨在與「upload webkitdirectory」搭配使用。
新增了對列舉 (Enumerations) 的支援。
新增了對纖程 (Fibers) 的支援。
現在可以使用myFunc(...)
語法來建立可呼叫物件的閉包,這與 Closure::fromCallable('myFunc')
相同。
注意:
...
是語法的一部分,而不是省略。
新增了對唯讀 (readonly) 屬性的支援。
新增了對類別常數的 final 修飾符的支援。此外,介面常數預設變為可覆蓋。
新增了 CURLOPT_DOH_URL
選項。
在 libcurl >= 7.71.0 時,新增了 blob 憑證的選項。
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,可以用來從 字串 而不是檔案發送檔案。
<?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
,這是之前的硬編碼值。
如果 libgd 使用 Avif 支援建置,現在可以透過 imagecreatefromavif() 和 imageavif() 支援 Avif。
以下函式 hash()、hash_file() 和 hash_init() 現在支援一個額外的可選 options
參數,可用於傳遞演算法特定資料。
新增了對 MurmurHash3
的支援,並支援串流處理。實作了以下變體:
初始雜湊狀態可以透過 options
陣列中的 seed
鍵傳遞,例如:
<?php
$h = hash("murmur3f", $data, options: ["seed" => 42]);
echo $h, "\n";
?>
0
到平台定義的 UINT_MAX
,通常為 4294967295
。
新增了對 xxHash
的支援。實作了以下變體:
初始雜湊狀態可以透過 options
陣列中的 seed
鍵傳遞,例如:
<?php
$h = hash("xxh3", $data, options: ["seed" => 42]);
echo $h, "\n";
?>
options
陣列中傳遞 secret
鍵來使用密鑰。<?php
$h = hash("xxh3", $data, options: ["secret" => "at least 136 bytes long secret here"]);
echo $h, "\n";
?>
mysqli.local_infile_directory
新增了 mysqli.local_infile_directory INI 指令,可用於指定允許載入檔案的目錄。僅在 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(),允許從結果集中擷取單個純量值。新方法接受一個可選的基於 0 的 column
參數,類型為 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
未啟用的情況下才有意義,因為在啟用的情況下,所有目錄都是允許的。
現在支援 SQLite 的 "file:"
DSN 語法,允許指定額外的旗標。如果設定了 open_basedir,則此功能將無法使用。
<?php
new PDO('sqlite:file:path/to/sqlite.db?mode=ro')
?>
新增了 POSIX_RLIMIT_KQUEUES
和 POSIX_RLIMIT_NPTS
這兩個 rlimits (資源限制)。這些 rlimits 僅在 FreeBSD 上可用。
fputcsv() 現在接受一個新的 eol
參數,允許定義自訂的換行字元序列,預設值保持不變,為 "\n"
。
SplFileObject::fputcsv() 現在接受一個新的 eol
參數,允許定義自訂的換行字元序列,預設值保持不變,為 "\n"
。