Composer — это менеджер зависимостей для PHP, который стал стандартом де-факто для управления пакетами и их версиями в современных PHP-проектах.
Анализ зависимостей:
composer.json для определения требуемых пакетовЗагрузка пакетов:
vendor/Создание lock-файла:
composer.lockЭто декларативный файл конфигурации, где вы указываете:
{
"name": "vendor/project",
"description": "Мой проект",
"type": "project",
"require": {
"php": "^8.0",
"laravel/framework": "^9.0",
"monolog/monolog": "^2.0"
},
"require-dev": {
"phpunit/phpunit": "^9.0"
},
"autoload": {
"psr-4": {
"App\\": "app/"
}
}
}
Ключевые секции:
require: Основные зависимости (production)require-dev: Зависимости для разработкиautoload: Настройки автозагрузки ваших классовscripts: Собственные скрипты для выполненияЭто генеруемый файл, который:
Пример структуры:
{
"_readme": ["Этот файл блокирует версии пакетов"],
"content-hash": "a1b2c3d4...",
"packages": [
{
"name": "monolog/monolog",
"version": "2.5.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "abfd1d84..."
}
}
]
}
Инициализация:
composer init
Установка зависимостей:
composer install
composer.lock (если есть) или создает новыйДобавление пакета:
composer require vendor/package
composer.json и composer.lockОбновление пакетов:
composer update vendor/package
composer.jsoncomposer.lock| Команда | Действие |
|---|---|
install |
Устанавливает версии из composer.lock (если нет — ведет себя как update) |
update |
Игнорирует lock-файл, обновляет зависимости до последних допустимых версий |
Composer автоматически генерирует:
vendor/autoload.php — точка входа для автозагрузкиcomposer dump-autoload --optimize
composer.lock в VCS (Git) — для воспроизводимости сборкиvendor/ в VCS — устанавливайте зависимости на сервереcomposer install --no-dev --prefer-dist --no-interaction --no-progress
require и require-dev Composer — это мощный инструмент управления зависимостями в PHP-проектах. composer.json определяет требования вашего проекта, а composer.lock фиксирует точные версии зависимостей для гарантии одинакового поведения на всех окружениях. Правильное использование этих файлов — ключ к стабильной работе приложения.