2024 PHP Conference Japan (日本 PHP 研討會)

其他變更

SAPI 模組的變更

Apache2Handler

PHP 模組已從 php7_module 重新命名為 php_module

已變更的函式

反射

ReflectionClass::getConstants()ReflectionClass::getReflectionConstants() 的結果現在可以透過新的參數 filter 進行過濾。新增了三個新常數以供使用:

標準

數學函數 abs()ceil()floor()round() 現在會正確遵守 strict_types 指令。先前,即使在嚴格類型模式下,它們也會強制轉換第一個參數。

Zip

其他擴充套件的變更

CURL

  • CURL 擴充套件現在至少需要 libcurl 7.29.0。

  • curl_version() 已移除過時的參數 version

日期和時間

DatePeriod 現在實作 IteratorAggregate(而不是 Traversable)。

DOM

DOMNamedNodeMapDOMNodeList 現在實作 IteratorAggregate(而不是 Traversable)。

Intl

IntlBreakIteratorResourceBundle 現在實作 IteratorAggregate(而不是 Traversable)。

Enchant

Enchant 擴充套件現在在可用的情況下預設使用 libenchant-2。仍然支援 libenchant 版本 1,但已被棄用,未來可能會移除。

GD

JSON

JSON 擴充套件已無法停用,並且始終是任何 PHP 組建中不可或缺的一部分,類似於日期擴充套件。

MBString

Unicode 資料表已更新至 13.0.0 版。

PDO

PDOStatement 現在實作 IteratorAggregate(而不是 Traversable)。

LibXML

現在所需的最低 libxml 版本為 2.9.0。這表示現在預設保證停用外部實體載入,並且不需要採取額外步驟來防止 XXE 攻擊。

MySQLi / PDO MySQL

PGSQL / PDO PGSQL

PGSQL 和 PDO PGSQL 擴充功能現在至少需要 libpq 9.1。

Readline

在互動式提示符號啟動之前呼叫 readline_completion_function()(例如在 auto_prepend_file 中)現在將覆蓋預設的互動式提示符號完成函式。先前,readline_completion_function() 僅在啟動互動式提示符號後呼叫時才有效。

SimpleXML

SimpleXMLElement 現在實作 RecursiveIterator 並吸收了 SimpleXMLIterator 的功能。SimpleXMLIteratorSimpleXMLElement 的一個空擴充。

INI 檔案處理的變更

  • com.dotnet_version 是一個新的 INI 指令,用於選擇 .NET framework 的版本以供 dotnet 物件使用。

  • zend.exception_string_param_max_len 是一個新的 INI 指令,用於設定字串化堆疊追蹤的引數中字串的最大長度。

EBCDIC

不再支援 EBCDIC 目標,儘管它們不太可能仍然有效。

效能

  • opcache 擴充功能已新增即時 (JIT) 編譯器。

  • 在沒有間隙的陣列上使用 array_slice() 將不再掃描整個陣列以查找起始偏移量。這可能會顯著減少具有大偏移量和小長度的函式的執行時間。

  • 使用 "C" LC_CTYPE 地區設定(這是預設值)時,strtolower() 現在使用 SIMD 實作。

新增註記

使用者貢獻的註記 1 則註記

barry dot nelson at amobiledevice dot com
1 年前
如果在 SuSe Linux 上載入 PHP8 apache 模組,設定腳本會嘗試使用自動產生的載入語句錯誤地載入它:
LoadModule php8_module /usr/lib64/apache2/mod_php8.so
這無效,以下修補程式修正了設定檔產生器…

--- /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

+ 如果 [ "$module_id" = "php8_module" ];那麼
+ module_id="php_module"
+ fi(結束條件式)
+
如果 [[ -f $module_path ]];那麼
printf "LoadModule %-30s %s\n" $module_id $module_path >&3 (將「載入模組 模組ID 模組路徑」輸出至檔案描述符 3)
To Top