Функции Язык программирования PHP

xml_set_external_entity_ref_handler

(PHP 3>= 3.0.6, PHP 4)

xml_set_external_entity_ref_handler - настраивает внешний обработчик экземпляров.

Описание

bool xml_set_external_entity_ref_handler (resource parser, string handler)

Устанавливает функцию внешнего обработчика экземпляров для XML-разборщика parser.
handler
это строка с именем функции, которая обязана существовать в момент вызова xml_parse() для parser.

Функция handler обязана принимать 5 параметров и возвращать integer-значение. Если возвращается FALSE (если никакого значения не возвращено), XML-разборщик остановит разбор, а xml_get_error_code() возвратит return XML_ERROR_EXTERNAL_ENTITY_HANDLING.

handler (resource parser, string open_entity_names, string base, string system_id, string public_id)

parser

Это ссылка на XML-разборщик, вызывающий обработчик.

open_entity_names

Это список разделённых пробелами имён мнемоник, открытых для разбора этого экземпляра (включая имя экземпляра).

base

Это база для разрешения системного идентификатора (system_id) внешнего экземпляра/entity. В настоящее время в этот параметр всегда устанавливается пустая строка.

system_id

Это системный идентификатор, как специфицировано в объявлении экземпляра.

public_id

Это public-идентификатор, как специфицировано в объявлении экземпляра, или пустая строка, если ничего не было специфицировано; пробелы в public-идентификаторе будут нормализованы, как требует XML spec.

Если функция обработчика установлена как пустая строка, или FALSE, обработчик отключается/disabled.

TRUE возвращается, если обработчик настроен, а FALSE, если parser не является разборщиком.

Примечание: вместо имени функции может быть предоставлен также массив, содержащий ссылку на объект и имя метода.


Назад Оглавление Вперёд
xml_set_end_namespace_decl_handler Вверх xml_set_notation_decl_handler

Использование постоянной таблицы ресурсов

Если вы просмотрите mysql.c, обратите внимание, что, за исключением более сложной функции connect, остальная часть модуля не изменилась.

Точно такой же интерфейс имеется для списка регулярных ресурсов и для списка постоянных ресурсов, только 'list' заменено на 'plist':

Более вероятно, однако, что эти функции окажутся бесполезны при попытке реализовать постоянный модуль. Обычно бывает нужно использовать тот факт, что список постоянных ресурсов является в действительности хэш-таблицей. Например, в модулях MySQL/mSQL, когда есть вызов pconnect() (постоянное connect), функция строит строку вывода host/user/passwd, которая передаётся этой функции, и хэширует SQL-ссылку этой строкой как ключом/key. При следующем вызове pconnect() с теми же host/user/passwd, будет сгенерирован тот же key, и функция найдёт SQL-ссылку в постоянном списке.

Пока документация отсутствует, вы должны просмотреть в mysql.c или в msql.c, как можно использовать возможности хэш-таблиц plist'ов.