Перейти к содержанию

Хук integrate_pre_load

Хук integrate_pre_load относится к ранним хукам загрузки и предназначен для выполнения пользовательских функций на самом начальном этапе обработки запроса.

Расположение⚓︎

Sources/Load.php

<?php

call_integration_hook('integrate_pre_load');

Sources/Config.php

<?php

IntegrationHook::call('integrate_pre_load');

Как видим, хук не имеет параметров; в нём доступны для использования любые переменные, определённые до его вызова.

Назначение⚓︎

Хук integrate_pre_load позволяет вызвать одну или несколько функций до начала общей обработки SMF. Это полезно для инициализации, модификации настроек или выполнения задач, которые должны произойти как можно раньше. Например:

  • Модификация глобальных настроек SMF ($modSettings), чтобы они соответствовали настройкам интегрированной внешней системы (например, CMS или другого форума).
  • Загрузка дополнительных библиотек или проверок, которые зависят от раннего этапа.
  • Любые другие задачи, где нужно вмешаться до загрузки основных модулей SMF.

Этот хук не требует возвращаемого значения (в отличие от некоторых других, как integrate_verify_user), и он просто вызывает функцию, если она существует.

Ограничения

Поскольку этот хук вызывается очень рано, некоторые части SMF (например, сессии пользователей или база данных) могут быть ещё не инициализированы. Не полагайтесь на них здесь.

Использование⚓︎

Смотрите статью Как подключать хуки, там как раз пример использования данного хука.

Важно

Подключение хука путём вызова в PHP-файле неприменимо.

integrate_pre_load идеально подходит для вызова функций наподобие hooks из примера ниже:

<?php

class YourModName
{
    // Именно эту функцию нужно подключать через хук integrate_pre_load!
    public function hooks(): void
    {
        add_integration_function('integrate_pre_load_theme', self::class . '::preLoadTheme#', false, __FILE__);
        add_integration_function('integrate_load_theme', self::class . '::loadTheme#', false, __FILE__);
        // и так далее
    }

    public function preLoadTheme(): void
    {
        // ваш код
    }

    public function loadTheme(): void
    {
        // ваш код
    }
}

integrate_pre_load и класс как в примере выше позволяют централизованно управлять всеми хуками вашей модификации в одном месте. Этот хук предназначен для запуска нужных вам функций после выполнения хука integrate_pre_include.

Комментарии