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].
Примечания
- ↑ Composer — менеджер зависимостей в PHP. Habr. Дата обращения: 17 сентября 2024.
- ↑ 1 2 Introduction - Composer. getcomposer.org. Дата обращения: 17 сентября 2024.
- ↑ Changelog for Composer 1.0.0-alpha1. getcomposer.org. Дата обращения: 17 сентября 2024.
- ↑ Введение в Composer. mb4.ru. Дата обращения: 17 сентября 2024.
- ↑ Changelog for Composer 2.7.7. getcomposer.org. Дата обращения: 17 сентября 2024.
- ↑ composer/composer: Dependency Manager for PHP. GitHub. Дата обращения: 17 сентября 2024.
- ↑ Basic usage - Composer. getcomposer.org. Дата обращения: 17 сентября 2024.
- ↑ См. packagist.org
- ↑ Кто такой композитор? Informatecdigital. Дата обращения: 17 сентября 2024.
- ↑ PHP-композитор. Worksolutions. Дата обращения: 17 сентября 2024.
- ↑ Composer: от хаоса к порядку. Habr (21 января 2019). Дата обращения: 17 сентября 2024.
- ↑ Composer (package manager). StudyRaid. Дата обращения: 17 сентября 2024.
- ↑ 1 2 Composer 2.7.7 and 2.2.25 security release. Private Packagist (10 июня 2024). Дата обращения: 17 сентября 2024.
- ↑ Composer. endoflife.date. Дата обращения: 17 сентября 2024.
- ↑ 1 2 3 Composer для начинающих: установка и использование. itchief.ru. Дата обращения: 17 сентября 2024.
- ↑ 1 2 Composer: всё, что нужно знать о системе управления зависимостями в PHP. Skillbox. Дата обращения: 17 сентября 2024.
- ↑ 1 2 Composer — лучший друг. Nette Documentation. Дата обращения: 17 сентября 2024.
- ↑ PHP: Введение - Manual. php.net. Дата обращения: 17 сентября 2024.
- ↑ Интерфейс командной строки (CLI). mb4.ru. Дата обращения: 17 сентября 2024.
Ссылки
- getcomposer.org — официальный сайт Composer
- Composer на GitHub
- Документация Composer
- Packagist — основной репозиторий Composer
- Composer Tutorial Архивная копия от 8 мая 2021 на Wayback Machine
- Автоматизация базовых задач composer в Laravel