Добавить обработчики событий подключения файла init.php

Рейтинг: 39.7713  
Новая
Предложил Пользователь 14686 16.05.2012 13:00:56

Добавить обработчики событий подключения файла init.php

Необходимо добавить два обработчика событий:
OnBeforeIncludeInitPHP
OnAfterIncludeInitPHP
Они должны вызываться для всех существующих init.php: общего и сайто-зависимых.

Зачем это необходимо
добавление кода в init.php может преследовать две цели:

1. Добиться подключения кода на каждом хите т.е. расширение его области видимости. С последующим вызовом из произвольного места на сайте. Т.е. подключение кода и его вызов разнесены во времени исполнения страницы.

2.  Добиться подключения кода и его работы непосредственно сразу после подключения.

В обоих случаях код добавляют руками. Если необходимо раздавать код,  который работает по принципу 2 (подключили и тут же запустили) через маркетплейс, то это становится трудоёмкой задачей. Нужно писать инструкцию.

Пример такого кода -  класс для логирования. Он обслуживает код, который уже исполняется в init.php, а обработчики событий ещё не начали работу. Посмотрите на порядок выполнения страницы.

В маркетплейсе появились решения которые уже дописывают свой код в хвост init.php я считаю, что обработчики решат эту проблему.

Добавлять строчку в шапку init.php с вызовом CModule::IncludeModule('MyModule');
Руками разработчика или скриптом считаю не очень хорошей идеей.

Рейтинг: 0  
Пользователь 14686 16.05.2012 14:05:37
Обсуждение в группе маркетплейса
Рейтинг: 17.2818  
Пользователь 14686 16.05.2012 16:10:05
Сошлись на том, что проще пользоваться обработчиком.
Максим, OnPageStart вызывается на 232 строчке main/include.php, а init.php подрубается на 174. Если ты посмотришь промежуточные строчки, то увидишь, что там ничего нужного тебе и нет. Вот только сессия там стартует уже.