PHP
#bitrix#php#local#php_interface#events#EventManager#d7

Bitrix /local: events.php — регистрация обработчиков событий

Подключение обработчиков через EventManager::getInstance()->addEventHandler. Только привязка событий к классам, логика — в сервисах.

Как использовать

  1. Разместите файл в /local/php_interface/events.php и подключите из init.php после autoload.php.
  2. Обработчики реализуйте статическими методами в классах (например OrderService::onOrderSaved), классы загружаются через autoload.php.
  3. Имена событий проверяйте в документации модуля (sale, iblock и т.д.).

Регистрация обработчиков событий через EventManager: только привязка модуль/событие к классу и методу. Бизнес-логика остаётся в классах из /local/php_interface/lib.

<?php
// /local/php_interface/events.php

use Bitrix\Main\EventManager;

$eventManager = EventManager::getInstance();

$eventManager->addEventHandler(
    'sale',
    'OnOrderSaved',
    ['Project\\Services\\OrderService', 'onOrderSaved']
);

$eventManager->addEventHandler(
    'iblock',
    'OnAfterIBlockElementAdd',
    ['Project\\Services\\CatalogService', 'onElementAdd']
);

Замечания

  • EventManager::getInstance() — единственная точка доступа (Singleton). В обработчик передаётся объект \Bitrix\Main\Event; параметры — через $event->getParameter('ENTITY') и др.
  • Третий аргумент addEventHandler — массив [класс, метод] или имя функции; для классов метод должен быть публичным и статическим (либо callable).
  • Имена событий зависят от модуля: iblockOnAfterIBlockElementAdd, OnBeforeIBlockElementUpdate и т.д.; sale — см. документацию модуля sale. При сомнениях смотрите вызовы GetModuleEvents или исходники модуля.