COMPOSER #2. УСТАНАВЛИВАЕМ ПЕРВЫЙ ПАКЕТ

composer #2. Устанавливаем первый пакет

В прошлой статье мы скачали и установили composer. Удостоверились что все прошло хорошо и мы готовы продолжать знакомство. Пришло время установить первый пакет и попробовать его использовать. А также узнать откуда composer скачивает пакеты и как их искать.

Откуда composer скачивает пакеты

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

searching logging package on packagist


Заходим на страницу первого пакета 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. В него записалась информация о пакетах которые только-что загрузились и находятся у нас в папке. Более подробно суть этого файла рассмотрим дальше.

vendor directory, composer.json and composer.lock files

Использование установленного пакета и 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.