xml_set_element_handler

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

xml_set_element_handlerУстанавливает обработчик начального и конечного элементов

Описание

xml_set_element_handler(XMLParser $parser, callable|string|null $start_handler, callable|string|null $end_handler): true

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

Параметр start_handler вызывается при открытии нового XML-элемента. Параметр end_handler вызывается при закрытии XML-элемента.

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

parser

XML-парсер.

start_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-выражении.

Сигнатуру обработчика определяют вот так:

start_element_handler(XMLParser $parser, string $name, array $attributes): void
parser
XML-парсер, которым вызывается обработчик.
name
Содержит имя элемента, для которого вызывается этот обработчик. Если для этого синтаксического анализатора действует приведение к единому регистру, то имя элемента будет в верхнем регистре.
attributes
Ассоциативный массив с атрибутами элемента. Массив пуст, если у элемента нет атрибутов. Ключи этого массива — имена атрибутов, значения — значения атрибутов. Имена атрибутов приводятся к единому регистру по тем же критериям, что и имена элементов. Значения атрибутов не приводятся к одному регистру. Порядок извлечения атрибутов attributes идентичен порядку объявления атрибутов.

end_element

При передаче значения 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-выражении.

Сигнатуру обработчика определяют вот так:

end_element_handler(resource $parser, string $name): void
parser
XML-парсер, которым вызывается обработчик.
name
Содержит имя элемента, для которого вызывается этот обработчик. Если для этого синтаксического анализатора действует приведение к единому регистру, то имя элемента будет в верхнем регистре.

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

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

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

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