Set up external entity reference handler

# xml_set_external_entity_ref_handler

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

xml_set_external_entity_ref_handler — Set up external entity reference handler

### Description

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

Sets the external entity reference handler function for the XML parser `parser`.

### Parameters

`parser`

  The XML parser.

`handler`

  If `null` is passed, the handler is reset to its default state.

  Warning

  An empty string will also reset the handler, however this is deprecated as of PHP 8.4.0.

  If `handler` is a callable, the callable is set as the handler.

  If `handler` is a string, it can be the name of a method of an object set with xml_set_object().

  Warning

  This is deprecated as of PHP 8.4.0.

  Warning

  As of PHP 8.4.0, the callable is checked to be valid while setting the handler, not when it is called. This means that xml_set_object() must be called prior to setting a method string as the callback. However, as this behaviour is also deprecated as of PHP 8.4.0, using a proper callable for the method is recommended instead.

  The signature of the handler must be:

  handler(
  XMLParser `$parser`,
  string `$open_entity_names`,
  string|false `$base`,
  string `$system_id`,
  string|false `$public_id`
  ): bool
  `parser`
    The XML parser calling the handler.
  `open_entity_names`
    A space-separated list of the names of the entities that are open for the parse of this entity (including the name of the referenced entity).
  `base`
    This is the base for resolving the system identifier (`system_id`) of the external entity.
  `system_id`
    The system identifier as specified in the entity declaration.
  `public_id`
    The public identifier as specified in the entity declaration, or an empty string if none was specified; the whitespace in the public identifier will have been normalized as required by the XML spec.

  The handler should return `true` if the entity was handled, `false` otherwise. When returning `false` the XML parser will stop parsing and xml_get_error_code() will return `XML_ERROR_EXTERNAL_ENTITY_HANDLING`.

### Return Values

Always returns `true`.

### Changelog

Version | Description
--- | ---
8.4.0 | Passing a non-callable string to `handler` is now deprecated, use a proper callable for methods, or `null` to reset the handler.
8.4.0 | The validity of `handler` as a callable is now checked when setting the handler instead of checking when calling it.
8.0.0 | `parser` expects an XMLParser instance now; previously, a valid `xml` resource was expected.
7.3.0 | The return value of the `handler` is no longer ignored if the extension has been built against libxml. Formerly, the return value has been ignored, and parsing did never stop.

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