Composer — это не просто менеджер зависимостей для PHP, а фундаментальный инструмент, который изменил экосистему разработки. Если вы хотите устанавливать, обновлять и управлять библиотеками в своих проектах профессионально, без Composer сегодня не обойтись. Это руководство проведёт вас от основ до продвинутых приёмов работы с пакетами.
Что такое Composer и зачем он нужен?
Composer — это инструмент для управления зависимостями в PHP. Представьте, что вам нужна библиотека для работы с изображениями или отправки email. Вместо того чтобы вручную скачивать архив, распаковывать и подключать файлы, вы просто говорите Composer: "мне нужна эта библиотека", и он делает всё остальное. Более того, он автоматически скачивает и все зависимости этой библиотеки.
Composer не устанавливает библиотеки глобально, а работает в контексте конкретного проекта. Это позволяет разным проектам использовать разные версии одних и тех же библиотек без конфликтов.
Установка Composer
Перед установкой библиотек нужно установить сам Composer. Процесс зависит от вашей операционной системы:
Установка на Windows
- Скачайте установщик Composer-Setup.exe с официального сайта getcomposer.org
- Запустите установщик и следуйте инструкциям
- Установщик автоматически добавит Composer в PATH
- Проверьте установку командой
composer --versionв командной строке
Установка на Linux/macOS
- Откройте терминал
- Выполните команду:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" - Запустите установку:
php composer-setup.php - Перенесите файл в глобальную директорию:
sudo mv composer.phar /usr/local/bin/composer
Установка первой библиотеки
Допустим, вы хотите установить популярную библиотеку для логирования Monolog. Вот как это делается:
- Создайте директорию для проекта и перейдите в неё
- Инициализируйте проект командой:
composer init(ответьте на вопросы или нажимайте Enter для значений по умолчанию) - Установите библиотеку:
composer require monolog/monolog
Composer выполнит несколько действий:
- Создаст или обновит файл composer.json с информацией о зависимостях
- Скачает библиотеку monolog и все её зависимости в папку vendor/
- Создаст файл composer.lock, который фиксирует точные версии установленных пакетов
- Сгенерирует автозагрузчик vendor/autoload.php
Всегда добавляйте папку vendor/ в .gitignore. Файлы composer.json и composer.lock должны быть в репозитории, а сами библиотеки — нет.
Основные команды для работы с библиотеками
composer require [пакет]
Устанавливает пакет и добавляет его в composer.json. Можно указать версию: composer require monolog/monolog:^2.0
composer install
Устанавливает все зависимости, указанные в composer.lock (если он есть) или composer.json
composer update
Обновляет все пакеты до последних версий, соответствующих ограничениям в composer.json, и обновляет composer.lock
composer remove [пакет]
Удаляет пакет и обновляет composer.json
composer show
Показывает список установленных пакетов
Поиск библиотек
Composer использует репозиторий Packagist.org — главный каталог PHP-пакетов. Вы можете:
- Искать пакеты на сайте Packagist
- Использовать команду:
composer search [ключевое слово] - Просматривать информацию о пакете:
composer show [пакет]
Версии и ограничения
Composer использует семантическое версионирование. Вы можете указывать:
- Точная версия: "1.2.3"
- Диапазон: ">=1.0 <2.0"
- Волна: "~1.2" (>=1.2 <2.0)
- Каретка: "^1.2.3" (>=1.2.3 <2.0.0)
- Dev-версия: "dev-master"
Автозагрузка классов
После установки библиотек подключите автозагрузчик в вашем коде:
require __DIR__ . '/vendor/autoload.php';
// Теперь классы библиотек доступны автоматически
$log = new \Monolog\Logger('name');
Глобальная установка библиотек
Некоторые инструменты вроде PHPUnit или PHP-CS-Fixer удобно устанавливать глобально:
composer global require friendsofphp/php-cs-fixer
Глобальные пакеты устанавливаются в отдельную директорию и доступны из любой папки. Убедитесь, что путь к глобальным пакетам добавлен в PATH.
Собственные пакеты и репозитории
Вы можете создавать свои пакеты и подключать их через Composer. Для приватных пакетов можно использовать:
- Приватные репозитории на Packagist (платно)
- Собственный Satis-репозиторий
- Прямые ссылки на Git-репозитории
Оптимизация автозагрузки
Для продакшена используйте оптимизацию автозагрузки:
composer install --no-dev --optimize-autoloader
Это ускорит работу приложения, так как Composer создаст карту классов вместо поиска по файловой системе.
FAQ: Часто задаваемые вопросы
Как удалить Composer?
На Windows используйте стандартное удаление программ. На Linux/macOS удалите файл composer.phar из /usr/local/bin/.
Почему composer install не устанавливает пакеты?
Убедитесь, что у вас есть файл composer.json. Если его нет, создайте его командой composer init или вручную.
Как обновить сам Composer?
Используйте команду: composer self-update
Что делать, если пакет не найден?
Проверьте правильность написания имени пакета на Packagist.org. Имена чувствительны к регистру.
Можно ли использовать Composer без интернета?
Composer требует интернет для первоначальной установки пакетов. После этого можно использовать команду composer install офлайн, если пакеты уже загружены в кэш.
Как очистить кэш Composer?
Используйте команду: composer clear-cache
Что такое "dev-master"?
Это указание на последнюю версию в ветке master репозитория. Не используйте это в продакшене, так как код может быть нестабильным.
Как игнорировать обновления конкретного пакета?
Добавьте пакет в секцию "replace" или используйте патч-файлы через инструменты вроде cweagans/composer-patches.