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

Массив конфигурации

Файл инициализации хака должен заканчиваться возвратом массива, который содержит конфигурацию хака: функции запуска, обработчики доставки и рекламных сетей, задачи планировщика, API-функции.

Ключами этого массива будут названия соответствующих конфигураций. Значениями - массивы со списком файлов, функций или настроек. Если функция или файл представлены в единичном экземпляре, можно использовать строку вместо массива.

Доступные ключи:

Пример возвращаемого массива:

return [
  'init' => [ 'hack_proxy_init'],
  'api' => [ 'proxy', 'wm' ],
  'api-auth' => [
   [ 'proxy', [ 'check', 'list', 'add', 'del' ],
   [ 'wm', 'getproxy' ]
  ],
  'cron-3min' => [ 'checker' ],
];

Функция инициализации

Сразу после загрузки всех модулей, система запускает их функции инициализации.

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

Пример функции инициализации:

function hack_proxy_init( $core ) {
  $core->handle( 'modules', 'hack_proxy_route' );
  $core->handle( 'menu', 'hack_proxy_menu' );
}

Обработчики и фильтры

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

Новый обработчик добавляется функцией handle:

$core->handle( $place, $function );

Где $place - место обработчика, а $function - название вызываемой функции.

Например:

$core->handle( 'modules', 'hack_proxy_route' );

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

  • modules - место для установки функций роутинга, выполняется перед системным роутингом.
  • actions - место для подготовительных действий, выполняется прямо перед обработчикам modules.
  • menu - фильтр, готовящий навигационное меню. Принимает меню вторым параметром и должен возвращать дополненный вариант.
  • newmenu - фильтр постобработки меню. Выполняется над готовыми массивом меню.
  • header - выполняется перед выводом верхнего блока сайта, после подготовки блока.
  • footer - выполняется перед выводом подвала сайта, после подготовки блока.
  • medialibs - фильтр списка библиотек для загрузки файлов.

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

Пример готового файла запуска

Вот так бы выглядел файл запуска для хака с названием proxy, у которого есть несколько разделов, API с авторизацией и задачи планировщика.

<?php

// Startup
function hack_proxy_init( $core ) {
  $core->handle( 'modules', 'hack_proxy_route' );
}

// Routing
function hack_proxy_route( $core ) {
  switch ( $core->app->div ) {
    case 'proxy-list': $core->hack->proxy->mod( 'listing', 'hack_proxy_list' );
    case 'proxy-check': $core->hack->proxy->mod( 'listing', 'hack_proxy_check' );
    case 'proxy-stats': $core->hack->proxy->mod( 'stats’, 'hack_proxy_stats' );
 }
}

// Configuration
return [
  'init' => [ 'hack_proxy_init'],
  'api' => [ 'proxy' ],
  'api-auth' => [
    [ 'proxy', [ 'check', 'list', 'add', 'del' ],
  ],
  'cron-3min' => [ 'checker' ],
  'cron-1day' => [ 'stats' ],
];