Установка и использование composer

В этом руководстве рассмотрим выполнение установки пакетного менеджера composer и разберем на практике несколько базовых примеров его использования. Для начала разберёмся, что это и для чего он нужен.

Автор материала

Артем Зернов. Веб-разработчик, создатель проекта Лектория, эксперт MODX Revolution, директор веб-студии OpenColour. Youtube-канал OpenModx.

2
13 минут на прочтение
Теги по этой теме:

Composer - это пакетный менеджер уровня приложений для языка программирования PHP, который предоставляет средства по управлению зависимостями в PHP-приложении. Использование composer позволяет автоматизировать управление пакетами, которые присутствуют в Вашем проекте, а именно производить их установку, обновление и удаление.

Экосистема менеджера состоит из двух важных частей:

  1. Непосредственно сам composer, представляет собой утилиту командной строки для работы с пакетами;
  2. Репозиторий пакетов - Packagist.

Приступим к установке пакетного менеджера.

Если вы предпочитаете видео-формат:

Установка composer

Проверка версии

В этом руководстве установка будет показана на примере систем Unix/Linux/MacOs. Для начала стоит сказать, что для корректной работы менеджера пакетов, требуется наличие установленного PHP версии не ниже 5.3.2. Если не знаете какая версия установлена у Вас, то в командной строке выполните следующую команду

php -v

В ответе увидим версию php, в моем случае установлена 7.3.11. Если Ваша версия ниже требуемой или php не установлен, то соответствующее руководство вы можете найти здесь.

Версия php
Версия php

Скачивание менеджера

Создайте директорию, в которую будет производится установка composer.

mkdir composer

Перейдите в этот каталог.

cd ./composer/

Скопируйте файл менеджера на свой компьютер из официального репозитория

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

Проверка установочного файла

Проверим совпадение контрольной суммы с эталонной, это позволит нам использовать не поврежденный оригинальный файл, не содержащий каких-либо изменений.


php -r "if (hash_file('sha384', 'composer-setup.php') === '795f976fe0ebd8b75f26a6dd68f78fd3453ce79f32ecb33e7fd087d39bfeb978342fb73ac986cd4f54edd0dc902601dc') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Если значение хеша, устанавливаемого файла, совпадает с эталонным, то будет выведено сообщение Installer verified

Хеш совпадает
Хеш совпадает

Значение хеша актуального файла ‌composer-setup.php Вы можете узнать здесь.

Хеш значение актуального файла
Хеш значение актуального файла

Запуск установщика

Запустим загруженный файл ‌composer-setup.php

php composer-setup.php
Успешная установка composer
Успешная установка composer

В случае успешной установки увидим сообщение, что все настройки для использования composer правильные, и в ходе инсталляции создан исполняемый файл composer.phar.

Перемещение в глобальный каталог

Для того, чтобы composer был доступен для всех пользователей, переместим его в глобальный каталог /usr/local/bin/ к остальным исполняемым файлам системы и уберем расширение .phar.

mv composer.phar /usr/local/bin/composer
Перемещение в глобальный каталог
Перемещение в глобальный каталог

Если в консоли набрать команду composer, то будет выведена справка по его использованию. На этом установка composer закончена и можно переходить к практическим примерам его использования.

Команда composer
Команда composer

composer.json

В своей работе менеджер пакетов использует специальный файл, содержащий описание устанавливаемых пакетов. По правилам он должен находится в корне проекта и иметь название composer.json. В нем описаны зависимости проекта, и могут содержаться различные метаданные. В руководстве будем использовать файл со следующим содержанием

{
    "require": {
        "monolog/monolog": "1.0.*"
    }
}

Как видно, ключ require содержит названия пакетов и ограничение версии. Т.е. в проекте используется пакет monolog с любой версией из ветки 1.0. Соответсвенно, допустимо использование следующих обозначений в ограничении версий:

Знак Значение
<1.1 Версия ниже 1.1
<=1.1 Версия не выше 1.1 включительно
>1.1 Версия выше 1.1
>=1.1 Версия не ниже 1.1 включительно
1.* Любая версия ветки 1
1.1 Только версия 1.1

 

 

Примеры использования

Задача 1

Вы внедряетесь в какой-либо проект. Необходимо локально развернуть этот проект и продолжить его разработку. В репозитории предложенного Вам проекта находится файл composer.json с описанием зависимостей.

Решение

Перейдите в каталог с проектом (для примера test)

cd /test/

Напоминаю, что в корне этого каталога должен находиться файл composer.json с описанными зависимостями. В командной строке запустите composer с параметром install

composer install

В ходе выполнения команды в консоль будет выведена информация о выполняемых действиях.

Выполнение команды composer
Выполнение команды composer

И в результате успешного выполнения в каталоге test создана папка vendor, в которые загружены пакеты описание в файле composer.json

Результат работы
Результат работы

Помимо загруженного пакета, так же был создан файл composer.lock. В него были записаны точные версии пакетов, которые были установлены и его в дальнейшем можно использовать для установки пакетов. Таким образом, если при установке присутствует файл .lock и .json, то версии и состав пакетов будут взяты из lock-файла. Такой подход позволяет создавать проект с абсолютно одинаковыми версиями пакетов.

На этом решение первой задачи завершено, переходим далее.

Задача 2

Проект над которым Вы работаете претерпел некоторые изменения, а именно перешли на новые версии пакетов. У Вас есть файл composer.json, где версия пакета mononlog задана >=2.0. Необходимо обновить пакеты до последних версий.

Решение

Проверьте нахождение нового файла composer.json в корне Вашего проекта и отсюда запустите composer с параметром update.

composer update

При выполнении команды "update" менеджер пакетов считал json-файл, установил необходимость повышения версии пакета monolog до 2.1.1 и дополнительно установить зависимый пакет psr/log.

Обновление пакетов
Обновление пакетов

Как видите, один пакет был установлен и один обновлен. Решение второй задачи завершено.

Задача 3

Вы начинаете работу над проектом. Знаете что в нем будет использован пакет monolog не ниже версии 2.0. Необходимо создать файл, описывающий зависимости, для передачи другому участнику проекта, и установить эти пакеты.

Решение

Перейдите в папку с новым проектом (например test). Запустите команду composer с параметром init.

composer init 

Запустится генератор файла composer.json. В командной строке будут выводится сообщения менеджера пакетов composer, на которые необходимо ответить. Если не давать ответ, то в соответствующее поле запишется значение указанное в квадратных скобках. Первым предложением требуется указать имя пакета по маске "разработчик/проект". Если не указывать, то имя будет выглядеть "root/test". Укажите имя вашего пакета.

Генератор файла composer.json
Генератор файла composer.json
Description []: - описание пакета
Author [, n to skip]: - автор проекта

Если не хотите указывать автора, то нажмите "n".

Minimum Stability []: - минимальная степень стабильности пакета
Package Type (e.g. library, project, metapackage, composer-plugin) []: - тип пакета (библиотека, проект, метапакет и т.д.)
License []:  - лицензия

После лицензии будет предложено указать зависимости проекта. Здесь необходимо будет указать пакет monolog.

Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]? 

Укажите пакет monolog для поиска

Search for a package: monolog

С таким названием менеджер пакетов нашел 15 вариантов. Вам необходимо ввести номер нужного пакета, в нашем случае - 0.

Результат поиска
Результат поиска

Далее укажите версию пакета. По условиям задачи прописываем ">=2.0"

Enter the version constraint to require (or leave blank to use the latest version):  >=2.0

Описание пакета monolog закончено. Если необходимо добавить еще пакет, то в предложении Search for a package: укажите имя и проделайте предыдущие шаги. В противном случае нажмите enter. После этого, composer, предложит определить зависимости необходимые для разработки. Ответьте "no".

Would you like to define your dev dependencies (require-dev) interactively [yes]? no

Следующим шагом будет показано предварительное содержимое файла ‌composer.json

Результат поиска
Результат поиска

Если вы с ним согласны, то нажмите enter, если нет, то введите "no".

В заключении работы генератора, Вам будет предложено установить указанные зависимости. Ответьте "yes". Далее начнётся установка monolog с зависящими пакетами и сгенерируются автоматически файлы composer.json и composer.lock.

Результат выполнения задания
Результат выполнения задания

Задание выполнено.

Задача 4

При разработке проекта возникла необходимость установить в пакете monolog. Установите его используя composer.

Решение

Перейдите в каталог проекта. Если не важна версия, то наберите команду установки пакета monolog.

composer require monolog/monolog

Соответсвенно команда с указанием версии выглядит следующим образом

composer require "monolog/monolog>=2.0"

После выполнения команды установится указанный пакет и создастся или обновится файл composer.json. Задача выполнена.

Заключение

Использование на практике менеджера пакетов composer позволяет автоматизировать не только процесс установки и обновления пакетов, но и дает возможность использовать одни и те же версии пакетов среди всех разработчиков, что является несомненным плюсом. В руководстве были рассмотрены только базовые варианты использования менеджера, однако с его помощью можно удалять пакеты, использовать сторонние репозитории пакетов и многое другое.

Мы используем куки на нашем сайте. Продолжая просмотр, вы соглашаетесь с условиями пользовательского соглашения
Пожалуйста, подождите. Процесс оформления заказа может занимать до 30 секунд.