Разделы
PHP (8)
SEO (1)
Социальные сети

Менеджер зависимостей Composer для PHP

Менеджер зависимостей Composer для PHP

В этой статье мы узнаем что такое Composer, как его установить и как его использовать.

Composer (анг. "Музыкальный композитор") это менеджер зависимостей (Система управления пакетами) для языка программирования PHP.

Он упрощает и стандартизирует установку библиотек (пакетов) PHP, а также их зависимости и обновления.

Он очень популярен в мире PHP и на сегодняшний день содержит в себе более 200к пакетов.

В отличие от менеджера пакетов PHP PEAR, который заставляет разработчика установить библиотеки PHP глобально в системе, Composer позволяет устанавливать пакеты для каждого проекта отдельно в корневую папку проекта "vendor" и сам решает все зависимости. Механизм напоминает работу с NPM в Node.js или Bundler в Ruby.

Установка под Ubuntu-Linux

Чтобы установить Composer, на нашей машине уже должен быть установлен интерпретатор языка PHP и расширения "php-cli".

Установить "php-cli" можно командой:

apt-get install php-cli 

Скачиваем установщик:

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

Проверяем phar файл

Так как хэш "sha384" меняется с каждым выходом новой версии Composer, рекомендую проверить его на официальном сайте в разделе "Download".

В принципе данный шаг можно и пропустить и перейти сразу к установке.

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

Устанавливаем

Запускаем скрипт установки и устанавливаем Composer глобально:

sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Удаляем скрипт установки:

php -r "unlink('composer-setup.php')

Теперь нам необходимо добавить Сomposer в PATH, поэтому отредактируем файл "~/.bashrc" и добавим туда:

export PATH="$HOME/.config/composer/vendor/bin:$PATH"

Применим изменения:

source .profile

Тестируем

Вводим команду:

composer

Если мы сделали всё правильно, то увидим псевдографическую надпись "Composer" и все доступные команды, которые мы можем использовать.

Поиск пакетов

Чтобы найти нужный нам пакет, нам необходимо перейти на сайт:

https://packagist.org

и в поиске ввести ключевое слово, например "mail".

Далее мы сможем выбрать тот пакет, которые нам больше подходит.

Я обычно смотрю с начало на количество звёзд на Github, потом на количество загрузок. Чем их больше, тем популярные и стабильнее пакет.

Используем

Чтобы использовать композер в своём проекте, нам достаточно перейти в папку проекта и добавить какой не будь пакет.

Делается это командой:

composer require <vendor>/<package>

Где "vendor" это имя создателя пакета, а "package" имя пакета.

Таким обзаром, если мы захотим использовать например пакет "Swift Mailer", то нам достаточно ввести:

composer require swiftmailer/swiftmailer

Composer сам скачает пакет "swiftmailer" и все необходимые зависимости и поместит их в новую папку "vendor".

Далее он создаст два новых файла "composer.json", в котором запишет что мы установили "swiftmailer":

{
    "require": {
        "swiftmailer/swiftmailer": "^6.2"
    }
}

И "composer.lock" - в котором дополнительно будут указаны все зависимости пакета.

Мы можем также указать дополнительную опцию "--dev", если пакет нужен только во время установки. Тогда он появится в раздел "require-dev" вместо "require".

Теперь чтобы использовать данный пакет, нам достаточно подключить автозагрузчик (autoloading) композера:

<?php 

        require(__DIR__ . '/vendor/autoload.php');

После этого мы уже сможем использовать Swift Mailer.

Находим устаревшие пакеты

Чтобы найти устаревшие пакеты, достаточно ввести команду:

composer outdated

Устанавливаем все зависимости

Папку "vendor" как правило не коммитят в Git, поэтому после клонирование проекта, нам нужно установить пакеты и все зависимости из файла "composer.json", а точнее из "composer.lock".

Делается это с помощью команды:

composer install

Если указать опцию "--no-dev" - то пакеты из раздела "require-dev" устанавливаться не будут. Это полезно для установки пакетов на "production".

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

Чтобы обновить все пакеты, нам достаточно ввести команду:

composer update

Если мы хотим обновить только один пакет, то вводим:

composer update swiftmailer/swiftmailer

Удаление пакета

Если какой-то пакет нам больше не нужен, то мы можем удалить его с помощью команды:

composer remove swiftmailer/swiftmailer

Пользовательские настройки

Пользовательские настройки находятся здесь:

~/.composer
~/.cache/composer

Обновление Composer

Чтобы обновить Composer, достаточно ввести команду:

composer self-update

Удаление Composer

Если нам по какой-то причине больше не нужен Composer, то нам достаточно удалить файл "/usr/local/bin/composer".

Версионирование пакетов

В "composer.json" мы можем указывать различные зависимости и их версии.

{
    "require": {
        "swiftmailer/swiftmailer": "^6.2"
    }
}

Где "swiftmailer/swiftmailer" это название пакета, а "^6.2" это версия пакета.

НазваниеПримерОписание
Точная версия1.0.0Точная версия 1.0.0
Диапазон версий ">, >=, <, <=, !=">=1.0Версия равна 1.0.0 или выше
Шаблон версий1.0.*Это может быть версия 1.0.1 или 1.0.2 но не 1.1.0 и не 2.0.0
Оператор ~ (тильда)~1.1Эквивалентно >= 1.1
Оператор ^ (каретка)^6.2Пакет не должен нарушать обратную совместимость 6.2.0, 6.2.1 но не 7.0.0 и не 7.0.1

Семантическое версионирования

Как правило, разработчики пактов Composer придерживаюются "Семантическому версионированию" пактов.

"x.0.0" - это мажор весия (major) нарушающая обратную совместимость

"1.x.0" - это минор (minor) в которой может добавляться новая функциональность, не при этом не нарушатся обратная совместимость

"1.0.x" - это патч (patch) - обратно совместимые исправления

Подробнее можно узнать здесь:

https://semver.org/lang/ru/

Реклама:

Оставьте комментарий!

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий:


Написать новый комментарий

Интересное
Реклама

Основы PHP, ООП, MySQL, MVC, Создание движка с нуля