В прошлой статье мы скачали и установили composer. Удостоверились что все прошло хорошо и мы готовы продолжать знакомство. Пришло время установить первый пакет и попробовать его использовать. А также узнать откуда composer скачивает пакеты и как их искать.
Откуда composer скачивает пакеты
По умолчанию, пакеты берутся из packagist.org. Это официальный репозиторий composer пакетов и вы можете туда зайти и просмотреть весь их список. Но это не удобно и найти что-то полезное, таким способом, тяжело. Но есть удобный поиск. Например, нам нужно сделать логирование отладочной информации в файл из произвольных мест в коде. Пишем в строку поиска фразу log to file и видим следующее.

Заходим на страницу первого пакета monolog/monolog и смотрим информацию о нем. В самом низу есть документация и пример использования, подходит. Пробуем устанавливать.
Установка пакета
Давайте создадим тестовый проект и попробуем установить пакет. Создаем пустую папку и называем ее logger. Название тестовое, если хотите, можете назвать иначе. В этой папке создаем файл с названием composer.json и записываем туда следующее.
{ "require": { "monolog/monolog": "2.2" } }
Это файл настроек composer для нашего проекта. Все что в нем написано это то, что в наш проект нужно будет установить пакет monolog/monolog версии 2.2. Как указывать необходимую версию и какие в этом есть нюансы будет рассмотрено ниже. Если вам нужно несколько пакетов то все они перечисляются в поле require через запятую, например так.
{ "require": { "monolog/monolog": "2.2", "package/first": "1.0", "package/second": "1.0" } }
Но сейчас нам нужен один. Заходим в эту папку через терминал или командную строку, в зависимости от вашей операционной системы. И выполняем следующую команду.
composer install
И видим что в нашей папке проекта появилась папка vendor. В нее и классы необходимого пакета которыми мы будем пользоваться. Также появился файл с названием composer.lock. В него записалась информация о пакетах которые только-что загрузились и находятся у нас в папке. Более подробно суть этого файла рассмотрим дальше.

Использование установленного пакета и autoload
Теперь, для теста, создадим файл index.php и напишем следующий скрипт.
<?php require __DIR__ . '/vendor/autoload.php'; use Monolog\Logger; use Monolog\Handler\StreamHandler; $log = new Logger('test logger name'); $log->pushHandler(new StreamHandler('file.log', Logger::DEBUG)); $log->debug('Foo');
В первой строке мы подключаем файл autoload.php который находится в папке vendor. Это дает нам возможность не подключать через require все файлы которые скачал composer. А просто использовать необходимые нам классы через с помощью оператора use. Дальше мы используем классы пакета monolog/monolog для сообщений в файл с названием file.log в корне нашего проекта. Т.е. рядом с файлом index.php.
Запускаем наш скрипт из консоли следующей командой.
php -f index.php
И видим что у нас появился файл file.log и в нем находится наше сообщение.
[2021-02-15T14:10:58.814051+00:00] test-logger-name.DEBUG: Foo [] []
Команды для добавления и удаления пакетов
Если вы не хотите вручную менять composer.json файл, тогда можете использовать require и remove команды.
Например, чтобы установить пакет, вы можете ввести следующую команду.
composer require "monolog/monolog:2.2"
При этом автоматически создастся файл composer.json, если его нет. А если файл уже существует то он будет отредактирован. Дальше пакет установится и создастся или обновиться composer.lock.
Если вы хотите удалить пакет из проекта, тогда воспользуйтесь командой remove.
composer remove "monolog/monolog"
Она удалит указанный пакет, все ненужные зависимости и также обновит файлы.
Цель достигнута, у нас вышло установить пакет и использовать его классы. Для понимания как еще можно использовать этот пакет загляните в раздел документации к нему на packagist.org. В следующей статье поговорим о пакетов. Узнаем команду composer update и чем она отличается от composer install.