PHP Conference Japan 2024

xml_set_unparsed_entity_decl_handler

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

xml_set_unparsed_entity_decl_handler 設定未解析的實體宣告處理器

說明

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

設定 XML 解析器 parser 的未解析實體宣告處理器函式。

如果 XML 解析器遇到具有 NDATA 宣告的外部實體宣告,例如以下,則會呼叫 handler

<!ENTITY <parameter>name</parameter> {<parameter>publicId</parameter> | <parameter>systemId</parameter>}
        NDATA <parameter>notationName</parameter>

關於已宣告標記外部實體的定義,請參見 » XML 1.0 規範的 4.2.2 節

參數

parser

XML 解析器。

handler

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

警告

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

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

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

警告

自 PHP 8.4.0 起已棄用。

警告

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

處理器的簽名必須為

handler(
    XMLParser $parser,
    字串 $entity_name,
    字串|false $base,
    字串 $system_id,
    字串|false $public_id,
    字串|false $notation_name
): void
parser
呼叫處理器的 XML 解析器。
entity_name
即將定義的實體名稱。
base
這是用於解析外部實體的系統識別碼 (systemId) 的基礎。
system_id
外部實體的系統識別碼。
public_id
外部實體的公開識別碼。
notation_name
此實體的標記名稱(請參閱 xml_set_notation_decl_handler())。

返回值

永遠返回 true

更新日誌

版本 說明
8.4.0 傳遞非 可呼叫字串handler 現已棄用,請對方法使用適當的可呼叫物件,或使用 null 來重置處理器。
8.4.0 handler 作為 可呼叫 物件的有效性現在會在設定處理器時檢查,而不是在呼叫它時檢查。
8.0.0 parser 參數現在需要一個 XMLParser 實例;先前預期是一個有效的 xml 資源
新增註解

使用者貢獻的註解

此頁面沒有使用者貢獻的註解。
To Top