xml_set_unparsed_entity_decl_handler(PHP 3>= 3.0.6, PHP 4) xml_set_unparsed_entity_decl_handler - настраивает обработчик объявления неразобранного экземпляра/unparsed entity. Описаниеbool xml_set_unparsed_entity_decl_handler (resource parser, string handler) Устанавливает функцию обработчика объявления неразобранного экземпляра
для XML-разборщика parser. Этот обработчик будет вызываться, если XML-разборщик обнаружит объявление внешнего экземпляра с объявлением NDATA, как здесь:
См. в Разделе 4.2.2 спецификации XML 1.0 определение нотации объявлений внешних экземпляров. Функция handler обязана принимать 6 параметров: handler (resource parser, string entity_name, string base, string system_id, string public_id, string notation_name)
Если функция обработчика установлена как пустая строка, или FALSE, обработчик отключается/disabled. TRUE возвращается, если обработчик настроен, а FALSE, если parser не является разборщиком.
|
||||||||||
|
||||||||||
Одно важное замечание: ресурсы, входящие в список постоянных ресурсов обязаны
*НЕ* размещаться менеджером памяти PHP, т.е. они НЕ должны создаваться с помощью
emalloc(), estrdup(), etc.
Вместо этого нужно использовать регулярные malloc(), strdup(), etc.
Причина проста - в конце запроса (в конце запуска) каждый участок памяти, выделенный
менеджером памяти PHP, удаляется. Поскольку не предполагается удаление постоянного
списка в конце запроса, менеджер памяти PHP нельзя использовать для размещения
ресурсов, входящих в этот список.
Если вы регистрируете ресурс, вводимый в постоянный список, вы должны добавить для него деструктор как в постоянный, так и в непостоянный списки. Деструктор в деструкторе непостоянного списка ничего делать не должен. Деструктор в деструкторе постоянного списка должен соответствующим образом освобождать ресурсы, полученные данным типом (память, SQL-ссылки etc). Как и с непостоянными ресурсами, вы *ОБЯЗАНЫ* добавить деструкторы каждому ресурсу, даже если он не требует уничтожения и деструктор может быть пустым. Запомните: поскольку emalloc() и компания не используются в сочетании с постоянным списком, вы обязаны не использовать здесь efree() вообще.
| |