PHPackages                             technique102/bitrix-events-attributes - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. technique102/bitrix-events-attributes

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

technique102/bitrix-events-attributes
=====================================

Use the php8 attribute in Bitrix for event handlers

v0.1.4(2y ago)330[1 issues](https://github.com/Technique102/bitrix-events-attributes/issues)MITPHPPHP ^8.1

Since Jun 1Pushed 2y ago1 watchersCompare

[ Source](https://github.com/Technique102/bitrix-events-attributes)[ Packagist](https://packagist.org/packages/technique102/bitrix-events-attributes)[ Docs](https://github.com/Technique102/bitrix-events-attributes)[ RSS](/packages/technique102-bitrix-events-attributes/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (5)DependenciesVersions (6)Used By (0)

Регистрация обработчиков событий через атрибуты php8 (1С-Битрикс)
=================================================================

[](#регистрация-обработчиков-событий-через-атрибуты-php8-1с-битрикс)

[![Latest Stable Version](https://camo.githubusercontent.com/c590c44f5c783e4ce1e2033e6bf13621b9ded300a18fc9f77aac4ef728024aeb/68747470733a2f2f706f7365722e707567782e6f72672f746563686e697175653130322f6269747269782d6576656e74732d617474726962757465732f762f737461626c652e737667)](https://packagist.org/packages/technique102/bitrix-events-attributes)[![Total Downloads](https://camo.githubusercontent.com/74023ca93e33209ad158bf24ef55203effabb786355e655d33b045cd0746c203/687474703a2f2f706f7365722e707567782e6f72672f746563686e697175653130322f6269747269782d6576656e74732d617474726962757465732f646f776e6c6f616473)](https://packagist.org/packages/technique102/bitrix-events-attributes)[![License](https://camo.githubusercontent.com/6d12ba3168600a9888741ddb6c22be5778df562024c3d860efc60998f1bad6e9/687474703a2f2f706f7365722e707567782e6f72672f746563686e697175653130322f6269747269782d6576656e74732d617474726962757465732f6c6963656e7365)](https://packagist.org/packages/technique102/bitrix-events-attributes)[![PHP Version Require](https://camo.githubusercontent.com/2c988672b100d62971315a9f18b1ca9dd864e1e74b0ae348ff680dcb33f23c66/687474703a2f2f706f7365722e707567782e6f72672f746563686e697175653130322f6269747269782d6576656e74732d617474726962757465732f726571756972652f706870)](https://packagist.org/packages/technique102/bitrix-events-attributes)

Пакет поможет избавиться от классической ситуации при разработке на 1С-Битрикс, когда есть файл events.php который подключается в init.php и в котором большое количество вызовов \\Bitrix\\Main\\EventManager::getInstance()-&gt;addEventHandler().

Регистрация обработчика событий происходит через атрибуты, которые указываются рядом с методом класса который и будет выполнять обработку события.

Установка через composer
------------------------

[](#установка-через-composer)

```
composer require technique102/bitrix-events-attributes

```

Простое использование
---------------------

[](#простое-использование)

Создадим класс с методами которые будут обрабатывать события.

Пометим метод атрибутом EventHandler с указанием модуля и типа события.

Методов с обработчиками в классе может быть несколько.

Более того один обработчик может вызываться в разных событиях.

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

Так же можно указывать сортировку, по умолчанию 100.

```
use Technique102\BitrixEventsAttributes\Attributes\EventHandler;

class Handlers
{
    #[EventHandler('main', 'OnPageStart', 10)]
    #[EventHandler('main', 'OnPageStart')]
    public static function handlerOne(): void
    {
        \Bitrix\Main\Diag\Debug::writeToFile('WORK handlerOne!!!', '', 'bitrix_log.txt');
    }

    #[EventHandler('catalog', '\Bitrix\Catalog\Product::OnBeforeUpdate')]
    #[EventHandler('catalog', '\Bitrix\Catalog\Product::OnAfterAdd')]
    public static function handlerTwo(\Bitrix\Main\Event $e): void
    {
        \Bitrix\Main\Diag\Debug::writeToFile($e->getParameters(), '', 'bitrix_log.txt');
    }

    #[EventHandler('main', 'OnPageStart', 50)]
    public static function handlerThree(): void
    {
        \Bitrix\Main\Diag\Debug::writeToFile('WORK handlerThree!!!', '', 'bitrix_log.txt');
    }
}
```

Далее в init.php создаем менеджер событий и добавляем туда наш класс.

```
use Technique102\BitrixEventsAttributes\EventManager;

$eventManager = EventManager::getInstance();
$eventManager->addEventHandlerClass(Handlers::class);
$eventManager->boot();
```

Можно добавлять сколько угодно классов через метод addEventHandlerClass.

### Использование через настройки модуля

[](#использование-через-настройки-модуля)

Тут почти все то же самое, что и в простом использовании, только добавление классов происходит через файл .settings.php в модулях.

Класс с обработчиками событий при этом лежит в модуле.

Создаем в нужном модуле файл .settings.php.

В нем описываем значения для eventHandlerClasses, примерно так:

```
