外部エンティティリファレンスハンドラを設定する

# xml_set_external_entity_ref_handler

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

xml_set_external_entity_ref_handler — 外部エンティティリファレンスハンドラを設定する

### 説明

function 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 の場合、その callable がハンドラとして設定されます。

  `handler` が文字列の場合、xml_set_object() で設定されたオブジェクトのメソッド名になります。

  警告

  PHP 8.4.0 以降、非推奨となっています。

  警告

  PHP 8.4.0 以降では、実際に呼び出されるときではなく、ハンドラを設定する際に callable であるかがチェックされます。 従って、コールバックとしてメソッド文字列を指定する場合、それより前に、 xml_set_object() を呼び出しておく必要があります。 しかし、この動作も PHP 8.4.0 以降非推奨となっているため、メソッドには適切な callable を使用することが推奨されます。

  `handler` のシグネチャは、以下でなければいけません:

  function handler(
  XMLParser `$parser`,
  string `$open_entity_names`,
  string|false `$base`,
  string `$system_id`,
  string|false `$public_id`
  ): bool
  `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` を返します。

### 戻り値

常に `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` の戻り値は無視されることはなくなりました。 これより前のバージョンでは、戻り値が無視されていた上、パースが止まりませんでした。

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open