Полный цикл в digital

Загрузка собственных классов

1С Битрикс Управления сайтом довольно мощная и гибкая CMS позволяющая решать множество задач веб-разработки. В ней так же предусмотрены механизмы расширения базовых возможностей системы по средством собвтенных компонентов, модулей и классов. Давайте рассмотрим последние и разберёмся как же загружать их в систему. Существует 3 основных варианта подключения своего класса:

  1. Через модули методом AddAutoloadClasses()
  2. Через автозагрузчик классов методом registerAutoLoadClasses()
  3. По средствам Composer

Загрузка классов AddAutoloadClasses()

Первым делом необходимо расположить класс в удобном для этого месте, где его не затрут обновления системы и с ним будет удобно работать. Обычно я размещаю классы в папке /local/php_interface/lib/папка_с_типом_класса/.

В нашем случае папка_с_типом_класса это директория собирающая однотипные классы с собственными пользовательскими свойствами, для простоты пока опустим эту папку и поместим прямо в корень /lib/, назовём файл SomeClass.php:

/local/php_interface/lib/SomeClass.ph<?
namespace lib;

class SomeClass
{
    public static function hello()
    {
        echo "Hello!";
    }
}

Код добавления класса прописывается в файл init.php:

init.php<?
CModule::AddAutoloadClasses(
    '', // не указываем имя модуля
    array(
        // ключ - имя класса с простанством имен, значение - путь относительно корня сайта к файлу
        'lib\SomeClass' => '/local/php_interface/lib/SomeClass.php',
    )
);

Таким образом, как только нам потребуется воспользоваться нашим классом, система автоматически его подгрузит:

test.php<?
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");

$someclass = new lib\SomeClass();
$someclass->hello();

Загрузка классов registerAutoLoadClasses()

Первым делом необходимо расположить класс в удобном для этого месте, где его не затрут обновления системы и с ним будет удобно работать. Обычно я размещаю классы в папке /local/php_interface/lib/папка_с_типом_класса/.

В нашем случае папка_с_типом_класса это директория собирающая однотипные классы с собственными пользовательскими свойствами, для простоты пока опустим эту папку и поместим прямо в корень /lib/, назовём файл SomeClass.php:

/local/php_interface/lib/SomeClass.ph<?
namespace lib;

class SomeClass
{
    public static function hello()
    {
        echo "Hello!";
    }
}

Теперь в папке /local/php_interface/ создадим файл autoload.php где вызовем метод Bitrix\Main\Loader::registerAutoLoadClasses() вот с такими настройками:

/local/php_interface/autoload.php<?
Bitrix\Main\Loader::registerAutoLoadClasses(null, [
    // ключ - имя класса с простанством имен, значение - путь относительно корня сайта к файлу
    'lib\SomeClass' => '/local/php_interface/lib/SomeClass.php'
]);

Сам файл необходимо подключить в init.php в самом начале:

init.php<?
require_once( $_SERVER['DOCUMENT_ROOT'] . '/local/php_interface/autoload.php');

Таким образом, как только нам потребуется воспользоваться нашим классом, система автоматически его подгрузит:

test.php<?
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");

$someclass = new lib\SomeClass();
$someclass->hello();

Загрузка классов через Composer

Для автозагрузки классов Битрикс, можно использовать популярный менеджер зависимостей Composer. Он сам создаст файл autoload.php который будет отвечать за автозагрузку наших классов. Чтобы использовать Composer вам необходимо в папке /local/php_interface/ создать файл composer.json со следующим содержимым:

/local/php_interface/composer.json{
    "autoload": {
        "psr-4": {
        "lib\\": "lib/"
        }
    }
}

Первый lib\\ это пространство имён наших классов, а второй lib/ это папка относительно директории где создан conposer.json, где будут лежать наши классы. Затем открываем консоль, переходим в папку /local/php_interface/ и запускаем команду composer install. Если всё сделано правильно и у вас установлен Composer вы увидите следующее сообщение:

Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files

Composer создаст новую папку /vendor/ и файл autoload.php, который нам осталось загрузить в init.php как мы делали в первом методе:

init.php<? 
require_once ( $_SERVER['DOCUMENT_ROOT'] . '/local/php_interface/vendor/autoload.php' );
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг