xml_set_notation_decl_handler

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

xml_set_notation_decl_handler — 表記法宣言ハンドラを設定する

説明

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

XML パーサー parser の表記法宣言用ハンドラ関数を設定します。

表記法の宣言は、ドキュメントの DTD の一部であり、 次のようなフォーマットとなります。

<!NOTATION <parameter>name</parameter>
{ <parameter>systemId</parameter> | <parameter>publicId</parameter>?>
表記法宣言の定義に関しては、 » XML 1.0 仕様の 4.7 節 を参照ください。

パラメータ

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 を使用することが推奨されます。

ハンドラのシグネチャは、以下でなければいけません:

function handler(
    XMLParser $parser,
    string $notation_name,
    string|false $base,
    string $system_id,
    string|false $public_id
): void
parser

ハンドラをコールするXMLパーサー

notation_name

これは、前述の表記用フォーマットに示すように表記法の名前です。

base

外部エンティティのシステムID(system_id)を 取得する際の基本となります。

system_id

外部表記用宣言のシステム ID

public_id

外部表記用宣言のパブリック ID

戻り値

常に true を返します。

変更履歴

バージョン 説明
8.4.0 非 callable な string を handler に渡すことは、現在非推奨となっています。 メソッドには適切な callable を使用するか、ハンドラをリセットする場合は null を使用してください。
8.4.0 handler が callable として有効であるかどうかは、 呼び出し時ではなく、ハンドラーを設定する際にチェックされるようになりました。
8.0.0 引数 parser は、 XMLParser インスタンスを期待するようになりました。 これより前のバージョンでは、有効な xml resource が期待されていました。
+add a note

User Contributed Notes

There are no user contributed notes for this page.