2.8.3.2. Работа с Composer

Примечание

Composer установлен на всех серверах хостинга по умолчанию. При необходимости его можно устанавливать вручную.

Composer — пакетный менеджер для PHP. Он позволяет загружать/обновлять из официального репозитория packagist.org используемые проектом библиотеки и их зависимости. За счёт этого каждую из них не нужно скачивать и подключать вручную, а также нет необходимости хранить их непосредственно в самом проекте, что сокращает его размеры.

Подробная информация по работе с Composer представлена в официальной документации.

Запуск Composer выполняется следующим образом:

composer

Если версия PHP, используемая для запуска Composer, отличается от версии, отображаемой при его работе, выполните команду:

export PATH=/usr/local/php73/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin

Вместо php73 укажите нужную версию PHP.

  • install — установка пакетов, перечисленных в composer.json. Пакеты устанавливаются в тот каталог, из которого была выполнена команда.
  • update — обновление всех пакетов (если какие-либо пакеты были случайно удалены, они будут автоматически установлены).
  • update package/name — обновление конкретного пакета.
  • dumpautoload — пересоздание автозагрузчика.
  • require somepackage/somepackage:someversion — добавление нового пакета (по умолчанию пакеты ставятся из официального репозитория). При установке пакет прописывается в composer.json.
  • update –lock — обновление файла блокировки composer.lock.
  • –profile — добавление этого параметра к любой команде включит показ времени выполнения и объёма использованной памяти.
  • –verbose — подробная информация о выполняемой операции.
  • show — список установленных пакетов с описанием каждого.
  • show –platform — сведения о PHP.
  • –dry-run — репетиция выполнения команды. Может добавляться к командам install и update. Эмулирует выполнение команды без её непосредственного выполнения. Необходим для того, чтобы проверить, пройдёт ли установка пакетов и зависимостей успешно.
  • remove — удаление пакета. Точная противоположность require.

composer.json — это ключевой файл для работы Composer. Он содержит список библиотек и их версий, необходимых для работы проекта.

Каждый из пакетов также имеет собственный composer.json, в котором перечисляются все его зависимости. Этот файл формируется разработчиком пакета. Схема файла доступна на официальном сайте.

В файле composer.lock сохраняется текущий список установленных зависимостей и их версий. Необходим для того, чтобы у вех, кто клонирует проект, было идентичное пакетное окружение (были установлены тот же набор библиотек с теми же версиями).

При выполнении install Composer в первую очередь опирается на содержимое composer.lock. При каждом выполнении update версии обновлённых пакетов прописываются в composer.lock.

composer.lock содержит хеш файла composer.json. Если json-файл был отредактирован, Composer выдаст предупреждение о несоответствии lock-файла с json-файлом. В этом случае нужно будет обновить composer.lock командой update –lock.

Установка выполняется командой:

composer install

В результате Composer:

  1. Проверит наличие composer.lock:
    1. Если он существует, возьмёт из него названия нужных пакетов и их версии.
    2. Если его нет, считает содержимое файла composer.json и возьмёт из него названия нужных пакетов и их версии.
  2. Загрузит/установит пакеты нужных версий в каталог vendor.
  3. Автоматически сформирует файл autoload.php.
  4. Если файла composer.lock не было, создаст его.

Чтобы проект мог обращаться к установленным библиотекам, достаточно подключить autoload.php:

require_once '../vendor/autoload.php';

Обновление выполняется командой:

composer update

В результате Composer:

  1. Проверит содержимое composer.json.
  2. Определит последние версии на основе данных из этого файла.
  3. Установит последние версии пакетов.
  4. Обновит composer.lock в соответствии с установленными пакетами.

Для определения требуемого пакета используется команда require, которая встраивается в файл composer.json, или же используется команда в консоли:

composer require поставщик/пакет версия

Указание зависимостей в файле composer.json производится таким образом:

"require": {
    "поставщик/пакет1": "версия",
    "поставщик/пакет2": "версия",
    "поставщик/пакет3": "версия"
}
  • поставщик (vendor) — поставщик библиотеки, которая будет установлена.
  • пакет — имя пакета, предоставляемого поставщиком.
  • версия — версия запрашиваемой библиотеки. Если не указывать, то будет установлена последняя версия пакета. Для работы с версиями используются цифровые (1.2.1, 3.5.1) или же текстовые обозначения (dev-master, master). Также можно использовать неточные обозначения при помощи стандарта, описанного в SemVer.

К примеру, для установки пакета monolog нужно выполнить команду:

composer require "monolog/monolog"

Или указать в файле composer.json строки:

{
    "require": {
        "monolog/monolog": "*"
    }
}

После чего выполнить в консоли:

composer update

Для удаления пакетов нужно удалить из файла composer.json строки с их упоминанием. К примеру, для Monolog нужно удалить:

 "monolog/monolog": "*"

После чего нужно в консоли выполнить команду:

composer update

Либо же можно выполнить в консоли команду:

composer remove monolog/monolog

Если Composer сообщает, что пакет требует версии PHP не ниже той, что указана в тексте ошибки, установите эту версию, переопределив переменную PATH по инструкции, после чего повторно выполните команду Composer, при которой возникла ошибка.

Если при выполнении какой-либо команды composer возникает ошибка «Fatal error: Allowed memory size of XXX bytes exhausted», попробуйте запустить её следующим образом:

php -d memory_limit=-1 /usr/local/bin/composer команда
Содержание