Composer

Composer — система управления пакетами для программирования на PHP, предоставляющая стандартные форматы для управления зависимостями и библиотеками PHP.

Composer работает и устанавливает зависимости или библиотеки из командной строки. Также позволяет пользователю устанавливать PHP-приложения, доступные в Packagist[8] — основном репозитории, содержащем все доступные пакеты. Также имеется возможность автоматической загрузки необходимых библиотек, указанных в стартовой информации, что облегчает использование стороннего кода.

Общие сведения
Composer
Тип Система управления пакетами
Авторы Нильс Адерманн,
Жорди Боггиано[1]
Разработчики Нильс Адерманн,
Жорди Боггиано
Написана на PHP
Интерфейс Интерфейс командной строки
Операционная система Мультиплатформенное
Языки интерфейса английский[2]
Первый выпуск 1 марта 2012[3]
Аппаратные платформы x86, x86-64, ARM[4]
Последняя версия 2.7.7 (10 июня 2024[5])
Репозиторий [6] github.com/composer/comp…
Лицензия MIT[2]
Сайт getcomposer.org (англ.)

История

Разработка Composer была начата в апреле 2011 года программистами Нильсом Адерманном и Жорди Боггиано[9]. При создании инструмента авторы вдохновлялись пакетными менеджерами из других языков программирования, такими как npm для Node.js и Bundler для Ruby.

Первый релиз состоялся 1 марта 2012 года[10]. Первый стабильный релиз, версия 1.0.0, был выпущен 4 апреля 2016 года[11].

Composer является стандартом де-факто для управления зависимостями в современной PHP-разработке и активно поддерживается сообществом[12]. Основной веткой разработки является Composer 2.x. Для проектов, использующих устаревшие версии PHP (от 5.3.2 до 8.1), поддерживается ветка с долгосрочной поддержкой (LTS) — Composer 2.2.x[13]. Разработчики уделяют большое внимание безопасности; например, версия 2.7.7, выпущенная 10 июня 2024 года, была сфокусирована на устранении нескольких уязвимостей[13]. Поддержка Composer 1.x официально прекращена, и с 1 августа 2025 года репозиторий Packagist перестанет предоставлять для него метаданные[14].

Описание и принцип работы

Composer — это менеджер зависимостей уровня приложений для языка программирования PHP, который предоставляет стандартный формат для управления библиотеками и необходимыми компонентами. Он является стандартом де-факто в современной PHP-разработке и используется в большинстве популярных фреймворков и CMS, таких как Laravel, Symfony, Drupal, Magento и Yii[15].

Основной принцип работы заключается в том, что разработчик декларирует (указывает) все библиотеки, от которых зависит проект, в специальном файле composer.json[15], расположенном в корне проекта. В этом файле перечисляются необходимые пакеты и их версии (например, ^7.4 или ~1.8)[16].

В отличие от системных менеджеров пакетов (таких как PEAR), Composer устанавливает зависимости локально для каждого проекта в директорию vendor. Такой подход позволяет разным проектам на одном сервере использовать разные версии одной и той же библиотеки, избегая конфликтов. Для установки пакетов используется команда install, которая загружает их из основного репозитория Packagist или других указанных источников[17].

Для обеспечения консистентности окружения у всех разработчиков и на сервере Composer использует файл composer.lock. После первого запуска команды install Composer записывает в этот файл точные версии всех установленных пакетов и их зависимостей. При последующих запусках install на других машинах Composer будет устанавливать именно эти версии, игнорируя возможные обновления в репозиториях, что гарантирует идентичность окружения[15][16]. Для обновления пакетов до новых версий, разрешённых в composer.json, используется команда update.

Одной из ключевых функций Composer является автозагрузка классов. Он автоматически генерирует файл vendor/autoload.php[17]. Подключив этот файл в свой проект, разработчик получает возможность использовать классы из всех установленных библиотек без необходимости вручную подключать каждый файл с помощью конструкций require или include.

Composer представляет собой утилиту с интерфейсом командной строки (CLI), и все операции выполняются через терминал. Интерфейс программы является англоязычным[18][19].

Примечания

  1. Composer — менеджер зависимостей в PHP. Habr. Дата обращения: 17 сентября 2024.
  2. 1 2 Introduction - Composer. getcomposer.org. Дата обращения: 17 сентября 2024.
  3. Changelog for Composer 1.0.0-alpha1. getcomposer.org. Дата обращения: 17 сентября 2024.
  4. Введение в Composer. mb4.ru. Дата обращения: 17 сентября 2024.
  5. Changelog for Composer 2.7.7. getcomposer.org. Дата обращения: 17 сентября 2024.
  6. composer/composer: Dependency Manager for PHP. GitHub. Дата обращения: 17 сентября 2024.
  7. Basic usage - Composer. getcomposer.org. Дата обращения: 17 сентября 2024.
  8. См. packagist.org
  9. Кто такой композитор? Informatecdigital. Дата обращения: 17 сентября 2024.
  10. PHP-композитор. Worksolutions. Дата обращения: 17 сентября 2024.
  11. Composer: от хаоса к порядку. Habr (21 января 2019). Дата обращения: 17 сентября 2024.
  12. Composer (package manager). StudyRaid. Дата обращения: 17 сентября 2024.
  13. 1 2 Composer 2.7.7 and 2.2.25 security release. Private Packagist (10 июня 2024). Дата обращения: 17 сентября 2024.
  14. Composer. endoflife.date. Дата обращения: 17 сентября 2024.
  15. 1 2 3 Composer для начинающих: установка и использование. itchief.ru. Дата обращения: 17 сентября 2024.
  16. 1 2 Composer: всё, что нужно знать о системе управления зависимостями в PHP. Skillbox. Дата обращения: 17 сентября 2024.
  17. 1 2 Composer — лучший друг. Nette Documentation. Дата обращения: 17 сентября 2024.
  18. PHP: Введение - Manual. php.net. Дата обращения: 17 сентября 2024.
  19. Интерфейс командной строки (CLI). mb4.ru. Дата обращения: 17 сентября 2024.