Composer в проекте Битрикс
Интеграция Composer в Битриксе настраивается через секцию composer в конфигурационном файле .settings.php. Сам composer.json и папку пакетов vendor рекомендуется размещать выше корня сайта (DOCUMENT_ROOT), чтобы исключить публичный доступ к исходным кодам сторонних библиотек по HTTP.
Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.
Что нужно понимать
-
1
Настройка composer.json
-
2
Автозагрузка классов
-
3
Интеграция с ядром Битрикс
Материалы
Официальная документация
-
Автозагрузка классов Новая дока
Проверь себя
После деплоя на новый сервер сайт падает с фатальной ошибкой про vendor/autoload.php. Что произошло?
В .settings.php указан composer.config_path, а vendor не развернули: ядро делает require_once vendor/autoload.php рядом с composer.json без проверки существования. В деплой нужен composer install, а vendor вне Git.
Почему composer.json не стоит класть в корень сайта или в /bitrix?
В корне vendor окажется доступен по HTTP, а /bitrix принадлежит обновлениям. Документация рекомендует путь вне DOCUMENT_ROOT, например /home/bitrix/, либо /local/composer/ с закрытым доступом.
Зачем подключать composer-bx.json через merge-plugin, если проект и так работает?
Это зависимости самого ядра. Без них не заработают возможности, которые на Composer опираются: ORM-аннотации и CLI. Подключение через merge-plugin держит их в одном vendor с вашими библиотеками.
Класс из вашего модуля не находится, хотя он в vendor через PSR-4 вашего же composer.json. Где искать причину?
В порядке загрузки: ядро подключает vendor/autoload.php само, но классы модуля ищет через Loader::registerNamespace() после includeModule(). Либо регистрируйте namespace модуля в ядре, либо не смешивайте автозагрузку модуля с composer.
Не сходится?
Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.
Знаете материал лучше?
Предложите ссылку: после проверки она появится в этом разделе.
Войти, чтобы предложить