hostprofi.ru
Подобрать хостинг
Термин·буква C

Composer

краткое определение

Composer — менеджер зависимостей для PHP-проектов. Управляет пакетами из Packagist.org, разрешает совместимость версий, загружает зависимости и генерирует автозагрузчик. Фактический стандарт управления PHP-библиотеками с 2012 года.

Composer — инструмент управления зависимостями для PHP, аналог npm (Node.js) или pip (Python). Разработан Найлсом Адерманом и Харрисом Лиином при участии сообщества PHP. Позволяет объявить зависимости проекта в файле composer.json, и Composer загрузит нужные версии пакетов из репозитория Packagist.org.

Как работает

Файл composer.json описывает зависимости проекта с версионными ограничениями:

{
    "require": {
        "laravel/framework": "^10.0",
        "guzzlehttp/guzzle": "^7.0",
        "php": ">=8.1"
    },
    "require-dev": {
        "phpunit/phpunit": "^10.0"
    }
}

Команда composer install создаёт vendor/ с пакетами и composer.lock с точными версиями. composer.lock следует коммитить в репозиторий — это гарантирует идентичные версии на всех машинах. composer update обновляет версии в рамках ограничений и перезаписывает lock.

Composer генерирует автозагрузчик vendor/autoload.php. Одно включение в коде (require 'vendor/autoload.php';) — и все классы из всех зависимостей доступны без ручных require.

История

Composer разработан в 2011–2012 годах. Первый стабильный релиз — март 2012 года. Packagist.org — центральный репозиторий пакетов — запущен одновременно. К 2024 году Packagist хранит более 400 000 пакетов и обрабатывает миллиарды запросов в месяц. Laravel, Symfony, Drupal — используют Composer как обязательный инструмент развёртывания.

Связь с хостингом

Для развёртывания PHP-приложений на VPS команда composer install --no-dev --optimize-autoloader является стандартным шагом. На виртуальном хостинге Composer часто доступен через SSH или как встроенный инструмент панели управления. При отсутствии — Composer можно запустить локально и загрузить папку vendor/ по SFTP. Опция --no-dev исключает dev-зависимости из production-сборки.

Как работает Composer

Composer читает composer.json → резолвит граф зависимостей → скачивает пакеты через Packagist или VCS в vendor/. composer.lock фиксирует точные версии. composer install — по lock-файлу. composer update — обновляет до свежих совместимых версий. PSR-4 autoload регистрирует пространства имён.

Оптимизация для production

composer install --no-dev --optimize-autoloader: пропускает dev-пакеты (phpunit, debugbar), создаёт classmap вместо PSR-4 autoload (в 2–5 раз быстрее). Для CI/CD: кэшировать директорию vendor между сборками.

Безопасность зависимостей

composer audit — проверка зависимостей против базы CVE. Регулярное composer update для patch-версий. Фиксируйте мажорные версии в composer.json: "guzzlehttp/guzzle": "^7.0". Dependabot или Renovate — автоматические PR с обновлениями зависимостей.

Composer в Docker и CI/CD

Multi-stage Dockerfile: FROM composer:2 AS deps RUN composer install --no-dev --optimize-autoloader FROM php:8.2-fpm-alpine COPY --from=deps /app/vendor /app/vendor. Кэш в GitHub Actions: ~/.composer/cache. Dockerfile best practice: COPY composer.json → COPY composer.lock → RUN composer install (layer caching).

Composer управляет зависимостями PHP-проектов: WordPress всё чаще использует Bedrock с Composer. Strapi-аналоги на PHP используют Composer. В Docker: многоэтапная сборка с Composer. CI/CD-пайплайны кэшируют vendor/ между сборками. Packagist — главный репозиторий PHP-пакетов.

Другие термины