Всем привет!
Небольшой мануал по работе с composer в Битриксе.
Если Вы не знаете, что это и зачем он нужен - небольшая выдержка из википедии:
Composer - это пакетный менеджер уровня приложений для языка программирования PHP, который предоставляет средства по управлению зависимостями в PHP-приложении. Composer разработали и продолжают поддерживать два программиста Nils Adermann и Jordi Boggiano. Они начали разрабатывать Composer в апреле 2011, а первый релиз состоялся 1 марта 2012. Идея создания пакетных менеджеров уровня приложений не нова и его авторы вдохновлялись уже существовавшим на тот момент времени npm для Node.js.
Больше подробностей, а так же мануалов по установке, можно найти, забив в поисковике слово composer.
Начнем с того, что в Битриксе (последних версий) уже есть composer. Не буду разглагольствовать о том, почему composer.json лежит в папке bitrix, и вообще, почему он называется composer-bx.json
Можно рассказать проще в четырех словах: для битрикса будет два файла:
- Из коробки /bitrix/composer-bx.json
- Пользовательский, путь к которому мы указываем в файле настроек .settings.php
Требуется добавить в возвращаемый массив настроек (.settings.php ):
'composer' => [
'value' => ['config_path' => 'полный путь до файла composer.json']
],
Пример файла composer.json (будем держать его в корне проекта)
{
"require": {
"wikimedia/composer-merge-plugin": "dev-master",
},
"config": {
"vendor-dir": "local/vendor" .
},
"extra": {
"merge-plugin": {
"require": [
"'полный путь до файла composer-bx.json"
]
}
},
}
Немного пояснений. В данном файле указывается, что будет происходить merge с битриксовым файлом compose-bx.json (с использованием плагина wikimedia/composer-merge-plugin), а также указывается где будет расположена папка vendor
После выполнения composer update все зависимости будут установлены в каталог local/vendor
Также в нем будет создан файл autoload.php
Данный файл нам нужно подключить в init.php
Добавим в него код:
<? include $_SERVER["DOCUMENT_ROOT"].'/local/vendor/autoload.php'; ?>
И всё!
Для проверки можно, что-нибудь установить для проверки:
composer require kint-php/kint
B каком-нибудь тестовом файле
<? d(111); ?>
Ну и на сладенькое, немного автозагрузки:
Добавим в composer.json секцию autoload
"autoload": {
"psr-4": {
"App\\": "local/php_interface/App"
}
}
Далее в папке local/php_interface создаем папку App, в ней можем создать файл Main.php
namespace App;
class Main
{
static public function test() : void
{
echo 'HLWRD';
}
}
Далее где-нибудь в тестовом файле вызываем <?App\Main::test()?>
Результатом будет выведенная строка HLWRD.
Если Вы хотите подключить какую-либо библиотеку, имея только ссылку ссылку на репозиторий проекта, то это можно сделать добавив в composer.json секцию repositories:
"repositories":[
{
"type":"git",
"url":"https://github.com/maximaster/tools.orm"
}
],
После этого выполните composer update и пакет будет установлен.
Спасибо за внимание. Если у Вас есть вопросы, задавайте в комментариях.