Composer - это пакетный менеджер уровня приложений для языка программирования PHP, который предоставляет средства по управлению зависимостями в PHP-приложении. Использование composer позволяет автоматизировать управление пакетами, которые присутствуют в Вашем проекте, а именно производить их установку, обновление и удаление.
Экосистема менеджера состоит из двух важных частей:
- Непосредственно сам composer, представляет собой утилиту командной строки для работы с пакетами;
- Репозиторий пакетов - Packagist.
Приступим к установке пакетного менеджера.
Если вы предпочитаете видео-формат:
Установка composer
Проверка версии
В этом руководстве установка будет показана на примере систем Unix/Linux/MacOs. Для начала стоит сказать, что для корректной работы менеджера пакетов, требуется наличие установленного PHP версии не ниже 5.3.2. Если не знаете какая версия установлена у Вас, то в командной строке выполните следующую команду
php -v
В ответе увидим версию php, в моем случае установлена 7.3.11. Если Ваша версия ниже требуемой или 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.phar.
Перемещение в глобальный каталог
Для того, чтобы composer был доступен для всех пользователей, переместим его в глобальный каталог /usr/local/bin/
к остальным исполняемым файлам системы и уберем расширение .phar.
mv composer.phar /usr/local/bin/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
В ходе выполнения команды в консоль будет выведена информация о выполняемых действиях.
И в результате успешного выполнения в каталоге 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". Укажите имя вашего пакета.
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 позволяет автоматизировать не только процесс установки и обновления пакетов, но и дает возможность использовать одни и те же версии пакетов среди всех разработчиков, что является несомненным плюсом. В руководстве были рассмотрены только базовые варианты использования менеджера, однако с его помощью можно удалять пакеты, использовать сторонние репозитории пакетов и многое другое.
Вы должны авторизоваться, чтобы оставлять комментарии.