Установка и использование Composer в Ubuntu 16.04

Установка и использование Composer в Ubuntu 16.04Composer – это популярный менеджер зависимостей PHP, который упрощает процесс установки и обновления зависимостей проекта. Composer проверяет, от каких пакетов зависит проект, а затем устанавливает все необходимые версии пакетов в соответствии с требованиями.

1: Установка зависимостей Composer

Прежде чем приступить к установке Composer, нужно установить все зависимости программы.

Теперь установите зависимости Composer. В дальнейшем понадобятся следующие пакеты:

  • curl – для загрузки Composer;
  • php5-cli – для установки и запуска Composer;
  • php-mbstring – зависимость библиотеки;
  • git – позволяет Composer загружать зависимости проектов;
  • unzip – для извлечения заархивированных пакетов.

Все эти пакеты можно установить при помощи команды:

sudo apt-get install curl php-cli php-mbstring git unzip

2: Загрузка и установка Composer

Composer предоставляет написанный на PHP инсталлятор. Перейдите в домашний каталог и извлеките инсталлятор при помощи curl:

curl — sS https://getcomposer. org/installer — o composer-setup. php

Запустите скрипт PHP, чтобы убедиться, что хэш SHA-384 пакета совпадает с хэшем инсталлятора, указанном на этой странице .

php — r «if (hash_file(‘SHA384’, ‘composer-setup. php’) === ‘ 92102166af5abdb03f49ce52a40591073a7b859a86e8ff13338cf7db58a19f7844fbc0bb79b2773bf30791e935dbd938 ‘) < echo 'Installer verified'; > else < echo 'Installer corrupt'; unlink('composer-setup. php'); > echo PHP_EOL;»

Примечание. Замените выделенное красным значение своим хэшем.

Если значения совпали, команда вернёт:

Installer verified

Чтобы выполнить глобальную установку composer, введите:

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

Эта команда загрузит пакет менеджера Composer и выполнит его глобальную установку в /usr/local/bin, после чего в системе появится общедоступная команда composer. Вывод будет выглядеть так:

All settings correct for using Composer

Downloading 1.1.1.

Composer successfully installed to: /usr/local/bin/composer

command [options] [arguments]

-h, —help Display this help message

-q, —quiet Do not output any message

-V, —version Display this application version

—ansi Force ANSI output

—no-ansi Disable ANSI output

-n, —no-interaction Do not ask any interactive question

—profile Display timing and memory usage information

—no-plugins Whether to disable plugins.

Это значит, что менеджер зависимостей Composer был успешно установлен.

Также менеджер Composer можно установить индивидуально для каждого отдельного проекта. Локальный вариант установки особенно хорош в том случае, если пользователь не имеет права выполнять общесистемную установку программы. Чтобы установить Composer локально, загрузите пакет и проверьте его подлинность (как показано выше), а затем запустите:

php composer-setup. php

Она создаст файл composer. phar в текущем каталоге, который можно запустить при помощи команды:

./composer. phar command

3: Файл composer. json

Файл composer. json содержит информацию о зависимостях, которые должен скачать Composer для определённого проекта. Он позволяет задать необходимые версии зависимостей и исключить их нестабильные и потенциально опасные версии.

Этот файл не рекомендуется создавать вручную, поскольку при этом можно допустить ошибку в синтаксисе. Composer автоматически создаст файл composer. json после того, как вы добавите первую зависимость при помощи команды require. Остальные зависимости можно добавить с помощью этой же команды, и при этом нет необходимости вручную редактировать файл.

Процесс установки зависимостей проекта при помощи Composer состоит из следующих этапов:

  1. Определение необходимых приложению библиотек.
  2. Поиск подходящей открытой библиотеки в Packagist. org, официальном репозитории Composer.
  3. Выбор зависимостей.
  4. Запуск команды composer require, которая добавляет зависимости в файл composer. json и устанавливает пакеты.

Рассмотрим этот процесс на примере простого приложения.

Цель этого приложения — превратить заданное предложение в «понятный» URL (или slug); как правило, это приложение используется для преобразования названий страниц в URL-адреса (к примеру, обратите внимание на последний сегмент URL-адреса этого урока).

Итак, создайте каталог проекта; для примера назовём его slugify:

mkdir slugify

cd slugify

Поиск пакетов на Packagist. org

Теперь попробуйте найти пакет, генерирующий slug-адреса, в репозитории Packagist. org. Просто введите в поле поиска запрос slug.

Справа возле каждого результата поиска можно увидеть два счётчика. Первый показывает, сколько раз пакет был установлен; второй счётчик показывает, сколько раз пакет был отмечен на GitHub. Результат поиска можно переупорядочить согласно показателю одного из счётчиков. Конечно, пакеты с большим показателем счётчиков, как правило, более стабильны, так как они многими используются. Также важно проверить описание пакета – действительно ли это нужный пакет?

Итак, нужно найти простой конвертёр адресов. В руководстве используется пакет cocur/slugify.

Обратите внимание: Packagist указывает имя вендора и имя пакета (vendor name и package name). Каждому пакету присваивается уникальный идентификатор, или пространство имён (в том же формате, что и для репозиториев Github: vendor/package). Необходимый пакет называется cocur/slugify. Чтобы загрузить пакет автоматически, нужно указать менеджеру зависимостей пространство имён пакета.

Запрос пакета

Итак, теперь точное имя пакета известно. Используйте команду composer require, чтобы добавить этот пакет в файл composer. json:

composer require cocur/slugify

Using version ^2.1 for cocur/slugify

/composer. json has been created

Loading composer repositories with package information

Updating dependencies (including require-dev)

Downloading: 100%

Writing lock file

Generating autoload files

Как видите, Composer автоматически определяет необходимую версию пакета. Проверьте каталог проекта, теперь он содержит два файла (composer. json и composer. lock) и каталог vendor:

ls — l

total 12

-rw-rw-r— 1 8host 8host 59 May 17 10:24 composer. json

-rw-rw-r— 1 8host 8host 2894 May 17 10:24 composer. lock

drwxrwxr-x 4 8host 8host 4096 May 17 10:24 vendor

Файл composer. lock используется для хранения данных о версиях установленных пакетов и обеспечивает использование одинаковых версий пакетов в случае клонирования проекта. Каталог vendor содержит зависимости проекта.

Внимание: В случае использования контроля версий не отправляйте сообщения о коммитах каталога vendor; это применимо только для файлов composer. json и composer. lock.

При установке проекта, который уже содержит файл composer. json, используйте следующую команду, чтобы установить зависимости проекта:

composer install

Ограничения версий

Файл composer. json содержит примерно такой код:

cat composer. json

«require»: <

«cocur/slugify»: «^2.1»

Обратите внимание на знак вставки (^) перед номером версии. Для определения версии пакета Composer может использовать несколько типов ограничений и форматов; эта функция позволяет следить за стабильностью проекта. Оператор ^ используется в файле composer. json для максимальной совместимости версий. В данном случае он определяет версию 2.13 как минимальную и разрешает обновления до версии 3.0.

В целом, вам не придётся особенно долго возиться с ограничениями версий в файле composer. json. Однако в некоторых ситуациях может потребоваться отредактировать ограничения вручную (например, если вышла новая версия библиотеки, но composer. json не разрешает обновиться до неё).

^1.0 >= 1.0 < 2.0

^1.1.0 >= 1.1.0 < 2.0

1.0 >= 1.0 < 2.0.0

1.0.0 >= 1.0.0 < 1.1

1.2.1 1.2.1

1.* >= 1.0 < 2.0

1.2.* >= 1.2 < 1.3

Примечание. Подробнее об ограничениях версий можно прочесть в документации программы .

4: Сценарий autoload

Также Composer использует сценарий autoload, который можно добавить в проект для поддержки автозагрузки. Он упрощает работу с зависимостями и определяет собственные пространства имен.

Нужно просто добавить файл vendor/autoload. php в скрипты PHP перед установкой класса.

$slugify = new Slugify();

echo $slugify->slugify(‘Hello World, this is a long sentence and I need to make a slug from it!’);

Запустите скрипт в командной строке:

Он вернёт:

hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it.

5: Обновление зависимостей проекта

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

composer update

Эта команда проверит наличие новых версий пакетов. В случае обнаружении более новой версии, которая разрешена ограничениями версий, менеджер зависимостей установит её вместо устаревшей версии данного пакета. Все изменения будут внесены в composer. lock.

Заключение

Этот менеджер зависимостей не только упрощает процесс управления зависимостями проекта, но и устанавливает новый уровень совместного использования пакетов PHP, разработанных сообществом.