Хендлеры приложений

Содержание...

Хендлеры позволяют вашему приложению обрабатывать события, возникающие в работе одних приложений.

Простой пример использования хендлера: выполнение дополнительных действий при удалении контакта. Если ваше приложение подписано на событие удаления контакта (т. е. содержит в себе хендлер такого события), то при попытке выполнить такое действие в приложении «Контакты» ваше приложение может выполнить дополнительные проверки или обновить собственные данные, связанные с удаляемым контактом.

События в коде других приложений, которые могут обрабатываться вашими хендлерами, вызываются с помощью метода wa()->event(array('app_id', 'event_id')).

Каждый хендлер должен быть описан в отдельном файле. Файлы обработчиков внешних событий — хендлеров — размещаются в поддиректории приложения lib/handlers/. Имя файла хендлера должно иметь вид [external_app_id].[event_id].handler.php, где [external_app_id] нужно заменить на ID приложения, событие которого необходимо обрабатывать, а [event_id] — на ID самого обрабатываемого события.

Например, файл хендлера события удаления контакта в приложении «Контакты» должен быть расположен по пути lib/handlers/contacts.delete.handler.php. В этом файле нужно описать класс с именем вида [app_id][External_app_id][Event_id]Handler, унаследованный от системного класса waEventHandler.

Пример файла с классом хендлера:

<?php

class myappContactsDeleteHandler extends waEventHandler
{
    public function execute(&$params)
    {
        // ваша собственная логика обработки события удаления контакта
    }
}

Основным методом класса должен быть метод с именем execute(), принимающий в качестве аргументов параметры, которые передаются обработчику события через метод wa()->event().

Отладка хендлеров

При отладке собственного хендлера будет полезно помнить о том, что при выбрасывании исключений ожидаемое прерывание работы приложения искусственно подавляется фреймворком, а сообщения об исключениях записываются в лог-файл wa-log/error.log.