melbis.php

units/melbis.php — не обычный модульный скрипт. У него нет главной функции, нет шаблонов, и парсер его не вызывает. Это системный файл инициализации окружения, который подключается вручную один раз в корневом скрипте:

require 'units/melbis.php';

Это единственное ручное подключение файла во всём проекте. Все остальные модули платформа подключает автоматически: разработчик указывает зависимости в параметрах модуля через IDE, и парсер сам подгружает нужные файлы при запуске. Глубина вложенности не ограничена.

Что он делает

melbis.php — это не обычный модульный скрипт. У него нет главной функции, нет шаблонов, и парсер его не вызывает. Это системный файл инициализации окружения, который подключается вручную один раз в корневом скрипте. Он выполняет следующее:

Загрузка ядра и конфигурации. Подключает core/core.php, читает config.json и определяет все его параметры как PHP-константы. Проверяет наличие файла shop.lock — если он существует, сайт блокируется с сообщением об ошибке (используется во время резервного копирования или технических работ).

Настройка обработчиков ошибок. Перехватывает PHP-ошибки времени выполнения и фатальные ошибки, передавая их в функцию MELBIS_halt. Если на сервере создан файл error.save, ошибки дополнительно записываются в лог-файл _error_front.log с подробным контекстом: URL, IP, User-Agent, данные POST и сессии.

Регистрация автозагрузчика. Подключает Composer (если используется) и регистрирует автозагрузчик классов платформы из каталога core/class/. Благодаря этому все классы Melbis подгружаются автоматически по мере необходимости.

Функция MELBIS() — единственная глобальная функция, которую разработчик использует в своих скриптах. Реализована как синглтон: при первом вызове создаёт соединение с БД и экземпляр парсера, при последующих — возвращает уже созданный. Именно через неё вызываются все методы платформы.

Функция MELBIS_halt() — аварийное завершение работы. Выводит страницу с описанием ошибки и останавливает выполнение скрипта. В период резервного копирования (окно задаётся в config.json) возвращает код 503 Service Unavailable вместо 500.