xml_set_external_entity_ref_handler
(PHP 4, PHP 5, PHP 7, PHP 8)
xml_set_external_entity_ref_handler — 外部エンティティリファレンスハンドラを設定する
説明
XML パーサ parser
の外部エンティティ参照用ハンドラ関数を設定します。
パラメータ
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
のシグネチャは、以下でなければいけません:handler(
XMLParser$parser
,
string$open_entity_names
,
string|false$base
,
string$system_id
,
string|false$public_id
): boolparser
- ハンドラをコールする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
を返します。
戻り値
常に true
を返します。
変更履歴
バージョン | 説明 |
---|---|
8.4.0 |
非 callable な string を handler に渡すことは、現在非推奨となっています。
メソッドには適切な callable を使用するか、ハンドラをリセットする場合は null を使用してください。
|
8.4.0 |
handler が callable として有効であるかどうかは、
呼び出し時ではなく、ハンドラーを設定する際にチェックされるようになりました。
|
8.0.0 |
引数 parser は、
XMLParser インスタンスを期待するようになりました。
これより前のバージョンでは、有効な xml resource が期待されていました。
|
7.3.0 |
拡張モジュールが libxml を使ってビルドされていた場合、
handler の戻り値は無視されることはなくなりました。
これより前のバージョンでは、戻り値が無視されていた上、パースが止まりませんでした。
|