🧱 Суть

Каждый запрос в 1С-Битрикс проходит несколько последовательных этапов: от получения HTTP-запроса до отправки готовой HTML-страницы пользователю.

Понимание жизненного цикла помогает разобраться:

  • когда подключается ядро;
  • в какой момент выполняются обработчики событий;
  • где работают компоненты;
  • когда выводится готовая страница.

Общая схема:

Запрос браузера


index.php


header.php


Подключение ядра


Инициализация Битрикса


Выполнение компонентов


Вывод контента


footer.php


Ответ браузеру

📦 Проблема

Новички часто не понимают:

  • когда уже доступен объект $APPLICATION;
  • в какой момент подключаются модули;
  • почему обработчик события не срабатывает;
  • где лучше размещать собственный код.

Из-за этого код может выполняться слишком рано или слишком поздно.

✅ Решение

Понимать последовательность выполнения страницы и размещать код на соответствующем этапе жизненного цикла.

💻 Код

1. Запрос пользователя

Пользователь открывает страницу:

https://site.ru/catalog/

Веб-сервер передаёт запрос PHP.

2. Выполняется index.php

Практически каждая страница начинается так:

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
 
// Контент страницы
 
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");

Именно отсюда начинается формирование страницы.

3. Подключается header.php

Во время подключения:

  • запускается ядро Битрикса;
  • создаётся объект $APPLICATION;
  • подключаются необходимые модули;
  • загружаются настройки сайта;
  • выполняются ранние события.

После этого можно использовать большинство API Битрикса.

4. Инициализация системы

На этом этапе система:

  • определяет текущий сайт;
  • загружает настройки;
  • определяет пользователя;
  • проверяет авторизацию;
  • подключает языковые файлы;
  • подготавливает окружение.

После завершения инициализации приложение готово к работе.

5. Выполнение компонентов

Во время обработки страницы выполняются компоненты:

$APPLICATION->IncludeComponent(
    "bitrix:news.list",
    "",
    []
);

Каждый компонент:

  1. получает параметры;
  2. обращается к данным;
  3. выполняет бизнес-логику;
  4. подключает шаблон;
  5. выводит HTML.

На странице может быть несколько компонентов.

6. Выполняется пользовательский код

Во время формирования страницы может выполняться:

  • PHP-код страницы;
  • обработчики событий;
  • пользовательские классы;
  • собственные компоненты.

Обычно такой код располагается в:

/local

7. Подключается footer.php

После вывода контента выполняется:

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");

Здесь:

  • выводится подвал сайта;
  • подключаются оставшиеся скрипты;
  • закрываются HTML-теги;
  • завершается работа страницы.

8. Отправка ответа

После завершения выполнения PHP:

  • формируется итоговый HTML;
  • веб-сервер отправляет его браузеру;
  • браузер отображает страницу пользователю.

Роль init.php

Во время инициализации автоматически подключается:

/local/php_interface/init.php

Здесь обычно размещают:

  • регистрацию обработчиков событий;
  • подключение собственных классов;
  • глобальные настройки проекта.

Именно поэтому этот файл считается одной из точек входа пользовательского кода.

События жизненного цикла

Во время обработки страницы Битрикс вызывает различные события.

Например:

  • начало выполнения страницы;
  • подключение модулей;
  • окончание формирования страницы.

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

Частые ошибки

Выполнять код до подключения ядра

Плохо:

$APPLICATION->SetTitle("Каталог");

до подключения:

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");

Объект $APPLICATION ещё не существует.

Подключать ядро вручную несколько раз

Ядро должно подключаться один раз через header.php или специальные файлы пролога.

Повторное подключение может привести к ошибкам.

Размещать всю бизнес-логику в index.php

Лучше:

  • использовать компоненты;
  • выносить код в классы;
  • применять обработчики событий.

Выполнять тяжёлые запросы в шаблоне

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

Не учитывать порядок выполнения

Например, пытаться использовать данные компонента до его вызова.
Важно понимать последовательность выполнения страницы.

🎯 Вывод

  • Каждая страница Битрикса проходит фиксированный жизненный цикл
  • Выполнение начинается с index.php, затем подключается header.php и ядро системы
  • После инициализации выполняются компоненты и пользовательский код
  • Завершает обработку footer.php, после чего браузер получает готовую HTML-страницу
  • Понимание жизненного цикла помогает правильно размещать код и использовать возможности платформы

🔗 Связано