xml_set_external_entity_ref_handler
外部エンティティリファレンスハンドラを設定する
説明
true xml_set_external_entity_ref_handler(XMLParser $parser
, callable $handler
)
パラメータ
-
parser
-
XMLパーサ
-
handler
-
null
が渡されると、ハンドラはデフォルトの状態にリセットされます。
警告
空文字列を渡すことでもハンドラはリセットされますが、これは PHP 8.4.0 以降非推奨となっています。
handler
が callable の場合、その callable がハンドラとして設定されます。
handler
が文字列の場合、xml_set_object で設定されたオブジェクトのメソッド名になります。
警告
PHP 8.4.0 以降、非推奨となっています。
警告
PHP 8.4.0 以降では、実際に呼び出されるときではなく、ハンドラを設定する際に callable であるかがチェックされます。
従って、コールバックとしてメソッド文字列を指定する場合、それより前に、 xml_set_object を呼び出しておく必要があります。
しかし、この動作も PHP 8.4.0 以降非推奨となっているため、メソッドには適切な callable を使用することが推奨されます。
handler
のシグネチャは、以下でなければいけません:
bool handler(
XMLParser $parser
,
string $open_entity_names
,
stringfalse $base
,
string $system_id
,
stringfalse $public_id
)
-
parser
-
ハンドラをコールするXMLパーサ
-
open_entity_names
-
エンティティの処理を行うためにオープンされたエンティティの
名前のスペース区切りのリストです
(参照されるエンティティの名前を含みます)。
-
base
-
これは外部エンティティのシステム
ID (
systemid
) のベースとして解決されます。
-
system_id
-
エンティティ宣言で指定されたシステム ID です。
-
public_id
-
エンティティ宣言で
指定されたパブリック ID または指定されない場合は空の
文字列です。パブリック ID の中の空白文字は、XML 仕様で規定された
正規化を行っています。
ハンドラは、エンティティを処理された場合、true
を返す必要があります。
そうでない場合、false
を返すべきです。
ハンドラから返された値が false
の場合、XML パーサは処理を中断し、
xml_get_error_code は
XML_ERROR_EXTERNAL_ENTITY_HANDLING
を返します。