PHP Conference Japan 2024

xml_set_external_entity_ref_handler

(PHP 4, PHP 5, PHP 7, PHP 8)

xml_set_external_entity_ref_handler設定外部實體參考處理器

說明

xml_set_external_entity_ref_handler(XMLParser $parser, callable|string|null $handler): true

設定 XML 解析器 parser 的外部實體參考處理函式。

參數

parser

XML 解析器。

handler

如果傳入 null,處理器將會重置為其預設狀態。

警告

空字串也會重置處理器,但自 PHP 8.4.0 起已棄用。

如果 handler 是一個 可呼叫物件 (callable),則該可呼叫物件會被設定為處理器。

如果 handler 是一個 字串 (string),它可以是透過 xml_set_object() 設定之物件的方法名稱。

警告

自 PHP 8.4.0 起已棄用。

警告

自 PHP 8.4.0 起,會在設定處理器時檢查可呼叫物件是否有效,而不是在呼叫它時檢查。這表示必須在設定方法字串作為回呼之前呼叫 xml_set_object()。然而,由於此行為也自 PHP 8.4.0 起被棄用,建議改用適當的 可呼叫物件 (callable) 作為方法。

處理器的簽名必須為

handler(
    XMLParser $parser,
    字串 (string) $open_entity_names,
    字串 (string)|false $base,
    字串 (string) $system_id,
    字串 (string)|false $public_id
): 布林值 (bool)
parser
呼叫處理器的 XML 解析器。
open_entity_names
以空格分隔的實體名稱列表,這些實體在此實體的解析過程中處於開啟狀態(包括被參考實體的名稱)。
base
這是用於解析外部實體的系統識別碼 (system_id) 的基礎。
system_id
實體宣告中指定的系統識別碼。
public_id
實體宣告中指定的公開識別碼,如果未指定則為空字串;公開識別碼中的空格將根據 XML 規範的要求進行正規化。

如果實體已被處理,處理器應返回 true,否則返回 false。當返回 false 時,XML 解析器將停止解析,並且 xml_get_error_code() 將返回 XML_ERROR_EXTERNAL_ENTITY_HANDLING

回傳值

永遠返回 true

更新日誌

版本 說明
8.4.0 傳遞非 可呼叫物件 (callable)字串 (string)handler 現在已被棄用,請對方法使用適當的可呼叫物件,或使用 null 來重設處理器。
8.4.0 現在會在設定處理器時檢查 handler 作為 可呼叫物件 (callable) 的有效性,而不是在呼叫它時檢查。
8.0.0 parser 現在需要一個 XMLParser 實例;以前需要一個有效的 xml 資源 (resource)
7.3.0 如果擴充功能是針對 libxml 建置的,則 handler 的回傳值將不再被忽略。以前,回傳值會被忽略,而且解析永遠不會停止。
新增註記

使用者提供的註記

此頁面沒有使用者提供的註記。
To Top