воскресенье, 23 июня 2013 г.

XCN : Отложенные задачи

В X-Cart Next есть механизм отложенных событий или отложенных задач, когда событие кидается сейчас, а его обработчик запускается в отдельном процессе позже.

Для того, чтобы объявить свой обработчик своего события, надо:

1. Перекрыть метод \XLite\Core\EventListener::getListeners(), где связать имя события и класс-обработчик.

2. Написать свой класс обработчик, наследуясь от \XLite\Core\EventListener\AEventListener или \XLite\Core\EventListener\Base\Countable.
Пример простого обработчика - \XLite\Core\EventListener\Probe
Пример навороченного обработчика - \XLite\Module\CDev\AmazonS3Images\Core\EventListener\MigrateToS3

Вызывается событие просто:
\XLite\Core\EventTask::eventName($arg1, $arg2, ..., $argN);

Навороченный обработчик, который наследуется от \XLite\Core\EventListener\Base\Countable, до кучи хранит свое состояние в модели TmpVar. Таким образом, его состояние можно узнать вот так:
\XLite\Core\Database::getRepo('XLite\Model\TmpVar')->getEventState('eventName');

Инициализируется такое событие тоже сложнее:
\XLite\Core\Database::getRepo('XLite\Model\TmpVar')->initializeEventState('eventName');
\XLite\Core\EventTask::eventName($arg1, $arg2, ..., $argN);

Комментариев нет:

Отправить комментарий