Просмотров: 18949
Дата последнего изменения: 13.11.2023
Сложность урока:
2 уровень - несложные понятия и действия, но не расслабляйтесь.
3
4
5
Недоступно в лицензиях:
Ограничений нет
Чтобы отправить событие выполните следующее:
use Bitrix\Main\EventManager;
$event = new \Bitrix\Main\Event('moduleName', 'onEventName', array(
'data' => array(
'name' => 'John',
'sex' => 'male',
),
'datetime' => new \Datetime(),
));
$event->send();
Таким образом отправится событие от модуля moduleName с именем onEventName и данными, которые будут доступны в обработчиках этого события.
В некоторых ситуациях вычисление данных для отправки требует привлечения дополнительных ресурсов. В такой ситуации сконфигурируйте объект иначе:
use Bitrix\Main\EventManager;
$lazyEvent = new \Bitrix\Main\Event('moduleName', 'onEventName', function() use ($userId){
//какая-то работа, которая получает данные
$groups = loadUserGroups($userId);
return array(
'data' => array(
'name' => 'John',
'sex' => 'male',
'groups' => $groups,
),
'datetime' => new \Datetime(),
);
});
$Lazyevent->send();
В таком случае вычисление параметров события будет отложено до первого обращения к ним в обработчике. В итоге получается два преимущества:
- Если нет обработчиков, то не будут запускаться вычисления.
- Если в обработчиках не используются параметры события, то снова не будут запускаться вычисления.
Примечание: Доступно с версии главного модуля 17.0.0.