--- contributors: - ["Brett Taylor", "https://github.com/glutnix"] translators: - ["Aleksey Lysenko", "https://github.com/nasgul"] filename: LearnComposer-ru.sh --- [Composer](https://getcomposer.org/) — это инструмент управления зависимостями в PHP. Он позволяет вам декларировать библиотеки, от которых зависит ваш проект, и он будет управлять ими, то есть устанавливать/обновлять их для вас. # Установка ```sh # Устанавливаем composer.phar в текущую папку curl -sS https://getcomposer.org/installer | php # Если вы используете этот подход, вам нужно будет вызвать Composer следующим образом: php composer.phar about # Устанавливаем бинарный файл в ~/bin/composer # Примечание: убедитесь, что ~/bin находится в переменной PATH вашего окружения curl -sS https://getcomposer.org/installer | php -- --install-dir=~/bin --filename=composer ``` Пользователи Windows должны следовать [Инструкциям по установке в Windows](https://getcomposer.org/doc/00-intro.md#installation-windows) ## Подтверждение установки ```sh # Проверить версию и перечислить параметры composer # Получить дополнительную помощь для параметров composer help require # Проверить, способен ли Composer делать то, что ему нужно, и обновлён ли он composer diagnose composer diag # краткий вариант # Обновление Composer до последней версии composer self-update composer self # краткий вариант ``` # Использование Composer сохраняет ваши зависимости проекта в `composer.json`. Вы можете отредактировать этот файл, но лучше всего позволить Composer управлять им за вас. ```sh # Создать новый проект в текущей папке composer init # запускается интерактивная анкета с просьбой предоставить подробную информацию о вашем проекте. # Вы прекрасно можете оставить ответы пустыми, если не делаете другие проекты # зависимыми от создаваемого проекта. # Если файл composer.json уже существует, загрузите зависимости composer install # Чтобы загрузить только зависимости для готового продукта, т.е. # исключая зависимости для разработки composer install --no-dev # Добавить зависимость для готового продукта к этому проекту composer require guzzlehttp/guzzle # выяснит, какая существует последняя версия guzzlehttp / guzzle, # загрузит её и добавит новую зависимость в поле require файла composer.json. composer require guzzlehttp/guzzle:6.0.* # Загрузит последнюю версию, соответствующую шаблону (например, 6.0.2), # и добавит зависимость к полю require файла composer.json composer require --dev phpunit/phpunit:~4.5.0 # Добавит как зависимость для разработки. # Будет использовать последнюю версию> = 4.5.0 и <4.6.0 composer require-dev phpunit/phpunit:^4.5.0 # Добавит как зависимость для разработки. # Будет использовать последнюю версию> = 4.5.0 и <5.0 # Для получения дополнительной информации о совместимости версий Composer см. # [Документацию Composer по версиям] (https://getcomposer.org/doc/articles/versions.md) # Чтобы узнать, какие пакеты доступны для установки и в настоящее время установлены composer show # Чтобы узнать, какие пакеты в настоящее время установлены composer show --installed # Чтобы найти пакет со строкой «mailgun» в названии или описании composer search mailgun ``` [Packagist.org](https://packagist.org/) является основным хранилищем для пакетов Composer. Существующие сторонние пакеты ищите там. ## `composer.json` и `composer.lock` Файл `composer.json` хранит параметры допустимых версий каждой зависимости вашего проекта, а также другую информацию. Файл `composer.lock` хранит точную загруженную версию каждой зависимости. Никогда не редактируйте этот файл. Если вы включите файл `composer.lock` в свой Git-репозиторий, каждый разработчик установит версии зависимостей, которые вы используете. Даже когда будет выпущена новая версия зависимости, Composer продолжит загрузку версии, записанной в lock-файле. ```sh # Если вы хотите обновить все зависимости до новейших версий, # которые по-прежнему соответствуют вашим предпочтениям для версий composer update # Если вам нужна новая версия определённой зависимости: composer update phpunit/phpunit # Если вы хотите перенести пакет на более новую версию #с изменением предпочитаемой версии, # вам может потребоваться сначала удалить старый пакет и его зависимости. composer remove --dev phpunit/phpunit composer require --dev phpunit/phpunit:^5.0 ``` ## Автозагрузчик Composer создаёт класс автозагрузки, который вы можете вызвать из своего приложения. Вы можете создавать экземпляры классов через пространство имён. ```php require __DIR__ . '/vendor/autoload.php'; $mailgun = new Mailgun\Mailgun("key"); ``` ### PSR-4-совместимый автозагрузчик Вы можете добавить в автозагрузчик свои собственные пространства имён. Добавьте поле `autoload` в `composer.json`: ```json { "autoload": { "psr-4": {"Acme\\": "src/"} } } ``` Это скажет автозагрузчику искать что-либо в пространстве имён `\Acme` в папке `src`. Вы также можете использовать [PSR-0, карту классов или просто список файлов для включения](https://getcomposer.org/doc/04-schema.md#autoload). Также существует поле `autoload-dev` для пространств имён, предназначенных только для разработки. При добавлении или изменении ключа автозагрузки вам необходимо перестроить автозагрузчик: ```sh composer dump-autoload composer dump # краткий вариант # Оптимизирует пакеты PSR0 и PSR4 для загрузки классов с помощью карты классов. # Медленно запускается, но улучшает производительность готового продукта. composer dump-autoload --optimize --no-dev ``` # Кэш Composer ```sh # Composer хранит загруженные пакеты для использования в будущем. Очистите кэш с помощью: composer clear-cache ``` # Устранение неполадок ```sh composer diagnose composer self-update composer clear-cache ``` ## Темы, которые ещё (пока) не включены в этот учебник * Создание и распространение ваших собственных пакетов на Packagist.org или в другом репозитории * Предварительные и пост-скриптовые перехватчики: запуск задач, когда происходят определенные события Composer ### Ссылки * [Composer - Dependency Manager for PHP](https://getcomposer.org/) * [Packagist.org](https://packagist.org/)