PHP Conference Nagoya 2025

xml_set_external_entity_ref_handler

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

xml_set_external_entity_ref_handlerУстанавливает обработчик ссылок на внешние сущности

Описание

xml_set_external_entity_ref_handler(XMLParser $parser, callable $handler): true

Функция устанавливает функцию-обработчик ссылок на внешние сущности для XML-анализатора parser.

Список параметров

parser

XML-парсер.

handler

При передаче значения null обработчик возвращается в состояние по умолчанию.

Внимание

Пустая строка тоже сбросит обработчик, однако начиная с PHP 8.4.0 передача в параметр пустой строки устарела.

Функция установит как обработчик функцию, на которую указывает callable-выражение, если в параметр handler передали значение, которое вызывается как функция.

Параметр handler принимает строку (string) с названием метода объекта, который установили функцией xml_set_object().

Внимание

Начиная с PHP 8.4.0 передача в параметр строки с названием метода устарела.

Внимание

Начиная с PHP 8.4.0 корректность callable-выражения проверяется при установке, а не при вызове обработчика. Поэтому вызвать функцию xml_set_object() потребуется до установки строки с названием метода, который вызывается как callback-функция. Однако, поскольку такое поведение тоже устарело с PHP 8.4.0, вместо передачи строки с названием метода рекомендуют указывать метод в правильном callable-выражении.

Обработчик определяют со следующей сигнатурой:

handler(
    XMLParser $parser,
    string $open_entity_names,
    string|false $base,
    string $system_id,
    string|false $public_id
): bool
parser
XML-парсер, которым вызывается обработчик.
open_entity_names
Список разделённых пробелами имён сущностей, которые доступны для разбора текущей сущности (включая текущую сущность).
base
Основа для разрешения системного идентификатора (system_id) внешней сущности.
system_id
Системный идентификатор, который указали в объявлении сущности.
public_id
Открытый идентификатор, который указали в объявлении сущности, или пустая строка, если идентификатор не указывали; пробелы в идентификаторе нормализуются в соответствии с требованиями XML-спецификации.

Ожидается, что обработчик вернёт true, если обработал сущность, иначе ожидается значение false. При возврате значения false XML-парсер остановит разбор, а функция xml_get_error_code() вернёт константу XML_ERROR_EXTERNAL_ENTITY_HANDLING.

Возвращаемые значения

Функция возвращает логическое значение true.

Список изменений

Версия Описание
8.4.0 Передача в параметр handler строки (string), которую невозможно вызывать как callable-выражение, устарела; теперь рекомендуют передавать в параметр правильное callable-выражение для установки метода или null для сброса обработчика.
8.4.0 Корректность обработчика handler как callable-выражения теперь проверяется при установке обработчика, а не при вызове.
8.0.0 Параметр parser ожидает экземпляр класса XMLParser; раньше параметр ждал корректный xml-ресурс (resource).
7.3.0 Функция больше не игнорирует значение, которое возвращает обработчик handler, если модуль собрали с библиотекой libxml. Раньше функция игнорировала значение возврата, а разбор не останавливался.
Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top