xml_set_processing_instruction_handler(PHP 3>= 3.0.6, PHP 4) xml_set_processing_instruction_handler - настраивает обработчик инструкции процессинга/processing instruction (PI). Описаниеbool xml_set_processing_instruction_handler (resource parser, string handler) Устанавливает функцию обработчика processing instruction (PI) для XML-разборщика
parser. Инструкция процессинга имеет формат:
Вы можете поместить PHP-код внутрь такого тэга, но имейте в виду ограничение: в XML PI конечный тэг для PI (?>) не может быть в кавычках, поэтому данная последовательность символов не должна появляться в PHP-коде, который вы внедрили с PIs в XML-документы. Если же это так, остаток РНР-кода, а также "реальный" конечный тэг PI, будут рассматриваться как символьные данные. Функция handler обязана принимать три параметра: handler (resource parser, string target, string data)
Если функция обработчика установлена как пустая строка, или FALSE, обработчик отключается/disabled. TRUE возвращается, если обработчик настроен, а FALSE, если parser не является разборщиком.
|
||||||||||
|
||||||||||
Одно важное замечание: ресурсы, входящие в список постоянных ресурсов обязаны
*НЕ* размещаться менеджером памяти PHP, т.е. они НЕ должны создаваться с помощью
emalloc(), estrdup(), etc.
Вместо этого нужно использовать регулярные malloc(), strdup(), etc.
Причина проста - в конце запроса (в конце запуска) каждый участок памяти, выделенный
менеджером памяти PHP, удаляется. Поскольку не предполагается удаление постоянного
списка в конце запроса, менеджер памяти PHP нельзя использовать для размещения
ресурсов, входящих в этот список.
Если вы регистрируете ресурс, вводимый в постоянный список, вы должны добавить для него деструктор как в постоянный, так и в непостоянный списки. Деструктор в деструкторе непостоянного списка ничего делать не должен. Деструктор в деструкторе постоянного списка должен соответствующим образом освобождать ресурсы, полученные данным типом (память, SQL-ссылки etc). Как и с непостоянными ресурсами, вы *ОБЯЗАНЫ* добавить деструкторы каждому ресурсу, даже если он не требует уничтожения и деструктор может быть пустым. Запомните: поскольку emalloc() и компания не используются в сочетании с постоянным списком, вы обязаны не использовать здесь efree() вообще.
| |