Михаил Базаров Разработка на 1С-Битрикс Михаил Базаров

Как не создавать хаос в init.php 1C-Битрикс

Внимание! Все сообщения на форуме проходят модерацию. Ваше сообщение появится после проверки.
Встречаются проекты, где init.php разрастается до 5000 строк и более.
Сам не любитель лишний раз "срать" в него, но вот небольшая рекомендация, чтобы избежать превращение init.php в не читабельную помойку.

Рядом с этим файлом создайте отдельные директории handlers, agents, functions и.т.д., и подключайте файлы из них. Пример:
Код
$arrInitFiles = [

    // АГЕНТЫ
    $_SERVER["DOCUMENT_ROOT"] . "/local/php_interface/agents/Говорящее_Название_Агента.php",
    $_SERVER["DOCUMENT_ROOT"] . "/local/php_interface/agents/Говорящее_Название_Агента2.php",

    // ОБРАБОТЧИКИ
    $_SERVER["DOCUMENT_ROOT"] . "/local/php_interface/handlers/Говорящее_Название_Обработчика.php",
    $_SERVER["DOCUMENT_ROOT"] . "/local/php_interface/handlers/Говорящее_Название_Обработчика2.php",

    // ФУНКЦИИ
    $_SERVER["DOCUMENT_ROOT"] . "/local/php_interface/functions/Говорящее_Название_Функции.php",
    $_SERVER["DOCUMENT_ROOT"] . "/local/php_interface/functions/Говорящее_Название_Функции2.php"

];

foreach ($arrInitFiles as $initFile) {
    if (file_exists($initFile)) {
        require_once($initFile);
    }
}

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

Вариант с glob - что бы вообще не контролировать массив с файлами. Пусть это делает php
Код
foreach (glob(__DIR__ . '/agents/*.php') as $file) {
    require_once $file;
}

foreach (glob(__DIR__ . '/handlers/*.php') as $file) {
    require_once $file;
}

foreach (glob(__DIR__ . '/functions/*.php') as $file) {
    require_once $file;
}
Само собой, можно и покороче
Код
$arrInitFiles = [

    // АГЕНТЫ
    __DIR__ . "/agents/Говорящее_Название_Агента.php",
    
   и т д

];

foreach ($arrInitFiles as $initFile) {
    if (file_exists($initFile)) {
        require_once($initFile);
    }
}


Или
Код
<?php

define('BX_PUBLIC_MODE', 1);

$sections = ['functions', 'handlers', 'agents'];

foreach ($sections as $section) {
    $files = glob(__DIR__ . "/{$section}/*.php") ?: [];
    sort($files);

    foreach ($files as $file) {
        require_once $file;
    }
}
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
 

Блог-note Заметки по 1С-Битрикс