Работа с composer

Composer - менеджер зависимостей. Он позволяет быстро скачать все необходимые библиотеки и скрипты для проекта. Основой менеджера является файл в корневом каталоге проекта, в котором описаны все необходимые свойства проекта. Он представляет собой обычный JSON файл, в дереве (массиве объектов) которого и размещены свойства и их значения. Например указаны связанные с проектом зависимости и необходимые условия для запуска проекта.

В среде ОС Windows он устанавливаеться очень просто, скачиваем файл с оф. сайта и просто его инсталим, указывая при установке где лежит наш php.exe. Если вы идете через прокси также укахываем адресс прокси сервера.

Также можно скачать phar файл и разместить его в папке с php.exe, и потом рядом нужно создать батник со следующим текстом

C:\bin> echo @php "%~dp0composer.phar" %*>composer.bat

В конечном итоге у нас получается папка куда будут загружены все нужные библиотеки, обычно "vendor". В ней будет автоматически генерирован файл autoload.php, если наш проект создан с учетом спецификации PSR-4 то можно указать в основном файле composer.json, что нужно все классы проекта также заавтолоадить в этот файл, тогда можно просто в точке входа в приложение просто подключать файла автолоада и приложение автоматически получит все классы нужные для его работы.

Основным плюсом является возможность composer загружать зависимости библиотек, то-есть например если мы хотим установить шаблонизатор "twig", то вместе с ним будут скачаны и связанные библиотеки такие как "symfony/polyfill"

Самыми используемыми свойствами есть:

  • name - Имя пакета. Состоит из поставщика пакета / названия пакета. Обычно используется нижний регистр букв
  • description - Описание пакета. Обычно не больше одной строки.
  • keywords - Ключевые слова, связанные с проектом
  • version - Версия пакета. vX.Y.Z с необязательным суффиксом -dev, -patch (-p), -alpha (-a), -beta (-b) или -RC.
  • license - Тип лицензии.
  • type - Тип упаковки, обычно library.
  • authors - Авторы проекта. Представляет собой массив в котором могут быть такие свойства name: имя автора, email: адрес электронной почты автора, homepage: веб-сайт автора, role: роль автора в проекте
  • require - Список пакетов, необходимых для работы проекта. Если их не будет проект не будет установлен. Также тут можно указать необходимые библиотеки php.
  • autoload - Автозагрузка для автозагрузчика PHP, можно прицепить сво. Если код по спецификации PSR-4 и PSR-0 то все будет норм. PSR-4 - рекомендуемый способ, нет необходимости перегенирировать автолоадер при добавлении новых классов.
  • script - В процесс установки скриптов можно запускать свои php скрипты. Например выполнить какую-нибудь чистку файлов в папке. Например мы закачиваем bootstrap, он ляжет в папку vendor, или другую которую указали в vendor-dir, но он нам нужен на фронте, для этого пишем небольшой скрипт который просто будет копировать основные файлы в публичную папку.
  • repositories - Т.к composer использует packagist как репозиторий по умолчанию, использование данного свойства поможет нам сменить эту репу. Может быть несколько вариантов composer,vcs,pear,package
    "name": "wps/name",
    "description": "Project for test composer",
    "license": "GPL-3.0",
    "authors": [
        {
            "name": "Victor,
            "email": "Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
	"
        }
    ],
    {
 "autoload": {
 "psr-4": { "Lib\\": "core/" }
 },
{
 "type": "vcs",
 "url": "https://github.com/Victor8730/app1"
 },
    "require": {
         "php":">=7.3.0",
          "twig/twig":">=1.8,<2.0-dev"
    }
}

Со свойствами разобрались, теперь приступим к консольным командам, которые необходимы для того, чтобы заставить composer что-то делать :).

Итак заходим в консоль, и пользуемся данными командами.

  • composer init -> Создает базовый вариант файла composer.json в текущем каталоге.
  • composer require vendor/package -> Добавляет требуемый пакет в файл composer.json и устанавливает его в ваш проект.
  • composer install -> Если файла composer.lock нет, резолвит зависимости исходя из composer.json и создаёт его. Далее, анализирует файл composer.lock, скачивает и устанавливает указанные в нём версии пакетов.
  • composer update -> Обновляет ваши зависимости до последних версий и обновляет composer.lock.
  • composer validate -> Проверяет файл composer.json.
  • composer dump-autoload -> Если вам нужно обновить загрузчик, т. к. появились новые классы, вы можете выполнить команду dump-autoload чтобы избежать установки или обновления пакетов.
  • composer archive vendor/package -> Создать архив для указанного пакета. Команда также может быть использована для архивирования всего проекта без исключенных/игнорируемых файлов.
  • composer clear-cache -> Псевдоним команды clearcache, очищает внутренний кэш пакетов Composer-а.
  • composer create-project vendor/package dir/ -> Создать новый проект из указанного пакета в указанном каталоге.
  • composer show -> Список всех установленных пакетов (composer show). Список всех доступных пакетов (composer show --all).
  • composer remove -> Удаляет пакет из секций require или require-dev: remove vendor/package vendor/package2
  • composer diag -> Просмотреть диагностику компосера