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.json
composer.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
фиксирует точные версии зависимостей для гарантии одинакового поведения на всех окружениях. Правильное использование этих файлов — ключ к стабильной работе приложения.