Composer — это инструмент управления зависимостями в PHP. Он позволяет вам декларировать библиотеки, от которых зависит ваш проект, и он будет управлять ими, то есть устанавливать/обновлять их для вас.
Установка
1# Устанавливаем composer.phar в текущую папку
2curl -sS https://getcomposer.org/installer | php
3# Если вы используете этот подход, вам нужно будет вызвать Composer следующим образом:
4php composer.phar about
5
6# Устанавливаем бинарный файл в ~/bin/composer
7# Примечание: убедитесь, что ~/bin находится в переменной PATH вашего окружения
8curl -sS https://getcomposer.org/installer | php -- --install-dir=~/bin --filename=composer
Пользователи Windows должны следовать Инструкциям по установке в Windows
Подтверждение установки ¶
1# Проверить версию и перечислить параметры
2composer
3
4# Получить дополнительную помощь для параметров
5composer help require
6
7# Проверить, способен ли Composer делать то, что ему нужно, и обновлён ли он
8composer diagnose
9composer diag # краткий вариант
10
11# Обновление Composer до последней версии
12composer self-update
13composer self # краткий вариант
Использование
Composer сохраняет ваши зависимости проекта в composer.json
.
Вы можете отредактировать этот файл, но лучше всего позволить Composer управлять им за вас.
1# Создать новый проект в текущей папке
2composer init
3# запускается интерактивная анкета с просьбой предоставить подробную информацию о вашем проекте.
4# Вы прекрасно можете оставить ответы пустыми, если не делаете другие проекты
5# зависимыми от создаваемого проекта.
6
7# Если файл composer.json уже существует, загрузите зависимости
8composer install
9
10# Чтобы загрузить только зависимости для готового продукта, т.е.
11# исключая зависимости для разработки
12composer install --no-dev
13
14# Добавить зависимость для готового продукта к этому проекту
15composer require guzzlehttp/guzzle
16# выяснит, какая существует последняя версия guzzlehttp / guzzle,
17# загрузит её и добавит новую зависимость в поле require файла composer.json.
18
19composer require guzzlehttp/guzzle:6.0.*
20# Загрузит последнюю версию, соответствующую шаблону (например, 6.0.2),
21# и добавит зависимость к полю require файла composer.json
22
23composer require --dev phpunit/phpunit:~4.5.0
24# Добавит как зависимость для разработки.
25# Будет использовать последнюю версию> = 4.5.0 и <4.6.0
26
27composer require-dev phpunit/phpunit:^4.5.0
28# Добавит как зависимость для разработки.
29# Будет использовать последнюю версию> = 4.5.0 и <5.0
30
31# Для получения дополнительной информации о совместимости версий Composer см.
32# [Документацию Composer по версиям] (https://getcomposer.org/doc/articles/versions.md)
33
34# Чтобы узнать, какие пакеты доступны для установки и в настоящее время установлены
35composer show
36
37# Чтобы узнать, какие пакеты в настоящее время установлены
38composer show --installed
39
40# Чтобы найти пакет со строкой «mailgun» в названии или описании
41composer search mailgun
Packagist.org является основным хранилищем для пакетов Composer. Существующие сторонние пакеты ищите там.
composer.json
и composer.lock
¶
Файл composer.json
хранит параметры допустимых версий каждой зависимости
вашего проекта, а также другую информацию.
Файл composer.lock
хранит точную загруженную версию каждой зависимости.
Никогда не редактируйте этот файл.
Если вы включите файл composer.lock
в свой Git-репозиторий,
каждый разработчик установит версии зависимостей, которые вы используете.
Даже когда будет выпущена новая версия зависимости, Composer продолжит загрузку версии,
записанной в lock-файле.
1# Если вы хотите обновить все зависимости до новейших версий,
2# которые по-прежнему соответствуют вашим предпочтениям для версий
3composer update
4
5# Если вам нужна новая версия определённой зависимости:
6composer update phpunit/phpunit
7
8# Если вы хотите перенести пакет на более новую версию
9#с изменением предпочитаемой версии,
10# вам может потребоваться сначала удалить старый пакет и его зависимости.
11composer remove --dev phpunit/phpunit
12composer require --dev phpunit/phpunit:^5.0
Автозагрузчик ¶
Composer создаёт класс автозагрузки, который вы можете вызвать из своего приложения. Вы можете создавать экземпляры классов через пространство имён.
1require __DIR__ . '/vendor/autoload.php';
2
3$mailgun = new Mailgun\Mailgun("key");
PSR-4-совместимый автозагрузчик ¶
Вы можете добавить в автозагрузчик свои собственные пространства имён.
Добавьте поле autoload
в composer.json
:
1{
2 "autoload": {
3 "psr-4": {"Acme\\": "src/"}
4 }
5}
Это скажет автозагрузчику искать что-либо в пространстве имён \Acme
в папке src
.
Вы также можете использовать
PSR-0, карту классов или просто список файлов для включения.
Также существует поле autoload-dev
для пространств имён, предназначенных только для разработки.
При добавлении или изменении ключа автозагрузки вам необходимо перестроить автозагрузчик:
1composer dump-autoload
2composer dump # краткий вариант
3
4# Оптимизирует пакеты PSR0 и PSR4 для загрузки классов с помощью карты классов.
5# Медленно запускается, но улучшает производительность готового продукта.
6composer dump-autoload --optimize --no-dev
Кэш Composer
1# Composer хранит загруженные пакеты для использования в будущем. Очистите кэш с помощью:
2composer clear-cache
Устранение неполадок
1composer diagnose
2composer self-update
3composer clear-cache
Темы, которые ещё (пока) не включены в этот учебник ¶
- Создание и распространение ваших собственных пакетов на Packagist.org или в другом репозитории
- Предварительные и пост-скриптовые перехватчики: запуск задач, когда происходят определенные события Composer