Как установить и использовать Composer в Debian 10

Вступление

https://getcomposer.org [Composer] - это популярный инструмент управления зависимостями для PHP, созданный главным образом для облегчения установки и обновления зависимостей проекта. Он проверит, от каких других пакетов зависит конкретный проект, и установит их для вас, используя соответствующие версии в соответствии с требованиями проекта. Composer также обычно используется для начальной загрузки новых проектов на основе популярных платформ PHP, таких как Symfony и Laravel.

В этом руководстве мы увидим, как установить и использовать Composer на сервере Debian 10.

Предпосылки

Чтобы завершить это руководство, вам потребуется один сервер Debian 10, настроенный в соответствии с Debian 10 руководством по первоначальной установке сервера включая обычного пользователя с привилегиями + sudo +.

Шаг 1 - Установка зависимостей

Прежде чем вы сможете загрузить и установить Composer, мы убедимся, что на вашем сервере установлены все зависимости.

Сначала обновите кеш менеджера пакетов, выполнив:

sudo apt update

Теперь давайте установим зависимости. Нам понадобится + curl + для загрузки Composer и + php-cli + для его установки и запуска. Пакет + php-mbstring + необходим для обеспечения функций библиотеки, которую мы будем использовать. + git + используется Composer для загрузки зависимостей проекта, а + unzip + для извлечения сжатых пакетов. Все можно установить с помощью следующей команды:

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

С установленными предварительными условиями мы можем установить сам Composer.

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

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

Убедитесь, что вы находитесь в своем домашнем каталоге, затем извлеките установщик с помощью + curl +:

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

Затем убедитесь, что установщик соответствует хешу SHA-384 для последней версии установщика, найденной на странице [Открытые ключи / подписи Composer] [composer-sigs]. Скопируйте хеш с этой страницы и сохраните его как переменную оболочки:

HASH=

Убедитесь, что вы заменили последний хэш выделенным значением.

Теперь выполните следующий скрипт PHP, чтобы убедиться, что скрипт установки безопасен для запуска:

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

Вы увидите следующий вывод.

Выход

Installer verified

Если вы видите + Installer поврежден +, то вам нужно будет снова скачать скрипт установки и дважды проверить, что вы используете правильный хеш. Затем выполните команду, чтобы снова проверить установщик. После того, как у вас есть проверенный установщик, вы можете продолжить.

Чтобы установить + composer + глобально, используйте следующую команду, которая загрузит и установит Composer как общесистемную команду с именем + composer + в + / usr / local / bin +:

sudo php composer-setup.php --install-dir= --filename=

Вы увидите следующий вывод:

OutputAll settings correct for using Composer
Downloading...

Composer (version 1.8.6) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

Чтобы проверить вашу установку, запустите:

composer

И вы увидите вывод с версией и аргументами Composer, подобный этому:

Output   ______
 / ____/___  ____ ___  ____  ____  ________  _____
/ /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                   /_/
Composer version 1.8.6 2019-06-11 15:03:05

Usage:
 command [options] [arguments]

Options:
 -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.
 -d, --working-dir=WORKING-DIR  If specified, use the given directory as working directory.
 -v|vv|vvv, --verbose           Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug


. . .

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

Теперь давайте рассмотрим использование Composer для управления зависимостями PHP.

Шаг 3 - Использование Composer в проекте PHP

Проекты PHP часто зависят от внешних библиотек, и управление этими зависимостями и их версиями может быть сложным. Composer решает эту проблему путем отслеживания ваших зависимостей и облегчения их установки другими пользователями.

Чтобы использовать Composer в своем проекте, вам понадобится файл + composer.json. Файл + composer.json сообщает Composer, какие зависимости необходимо загрузить для вашего проекта, и какие версии каждого пакета разрешено устанавливать. Это крайне важно для поддержания согласованности вашего проекта и избежания установки нестабильных версий, которые потенциально могут вызвать проблемы обратной совместимости.

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

Процесс использования Composer для установки пакета в качестве зависимости в проекте включает следующие шаги:

  • Определите, какая библиотека нужна приложению.

  • Исследуйте подходящую библиотеку с открытым исходным кодом на Packagist.org, официальном репозитории пакетов для Composer.

  • Выберите пакет, от которого вы хотите зависеть.

  • Запустите + composer require, чтобы включить зависимость в файл` + composer.json` и установить пакет.

Давайте попробуем это с демонстрационным приложением.

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

Давайте начнем с создания каталога для нашего проекта. Мы назовем это * slugify *:

cd ~
mkdir slugify
cd slugify

Теперь пришло время поискать пакет Packagist.org, который поможет нам создать slugs. Если вы будете искать термин «слизняк» в Packagist, вы получите результат, подобный следующему:

изображение: https: //assets.digitalocean.com/articles/composer_debian10/packagist_slug_search.png [Packagist Search]

Вы увидите два числа на правой стороне каждого пакета в списке. Число сверху показывает, сколько раз пакет был установлен, а число снизу показывает, сколько раз пакет был помечен на https://github.com [GitHub]. Вы можете изменить порядок результатов поиска на основе этих чисел (найдите две иконки в правой части панели поиска). Вообще говоря, пакеты с большим количеством установок и большим количеством звезд имеют тенденцию быть более стабильными, так как их использует очень много людей. Также важно проверить актуальность описания пакета, чтобы убедиться, что это именно то, что вам нужно.

Нам нужен простой конвертер строки в слаг. Судя по результатам поиска, пакет + cocur / slugify + является хорошим совпадением с разумным количеством установок и звездочек.

Пакеты на Packagist имеют имя * vendor * и имя * package *. Каждый пакет имеет уникальный идентификатор (пространство имен) в том же формате, который GitHub использует для своих репозиториев, в форме + / +. Библиотека, которую мы хотим установить, использует пространство имен + cocur / slugif +. Вам нужно пространство имен, чтобы запросить пакет в вашем проекте.

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

composer require cocur/slugify

Вы увидите следующий вывод, когда Composer загрузит зависимость:

OutputUsing version ^3.2 for cocur/slugify
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
 - Installing cocur/slugify (v3.2): Downloading (100%)
Writing lock file
Generating autoload files

Как видно из вывода, Composer автоматически определил, какую версию пакета использовать. Если вы сейчас проверите каталог вашего проекта, он будет содержать два новых файла: + composer.json и` + composer.lock` и каталог + vendor:

ls -l
Outputtotal 12
-rw-r--r-- 1 sammy sammy   59 jul 15 13:53 composer.json
-rw-r--r-- 1 sammy sammy 2952 jul 15 13:53 composer.lock
drwxr-xr-x 4 sammy sammy 4096 jul 15 13:53 vendor

Файл + composer.lock + используется для хранения информации о том, какие версии каждого пакета установлены, и обеспечения использования тех же версий, если кто-то еще клонирует ваш проект и устанавливает его зависимости. В каталоге + vendor находятся зависимости проекта. Папка + vendor + не требует фиксации в управлении версиями - вам нужно только включить файлы * composer.json * и * composer.lock *.

Давайте кратко рассмотрим ограничения версии. Если вы проверите содержимое файла + composer.json, вы увидите что-то вроде этого:

cat composer.json
Output{
   "require": {
       "cocur/slugify": "^3.2"
   }
}

Вы можете заметить специальный символ + ^ + перед номером версии в + composer.json. Composer поддерживает несколько различных ограничений и форматов для определения требуемой версии пакета, чтобы обеспечить гибкость и стабильность вашего проекта. Оператор вставки (+ ^ +), используемый автоматически сгенерированным файлом + composer.json +, является рекомендуемым оператором для максимальной совместимости, следуя semantic versioning. В этом случае он определяет * 3.2 * как минимальную совместимую версию и разрешает обновления для любой будущей версии ниже * 4.0 *.

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

Вот несколько примеров, которые помогут вам лучше понять, как работают ограничения версии Composer:

Constraint Meaning Example Versions Allowed

^1.0

>= 1.0 < 2.0

1.0, 1.2.3, 1.9.9

^1.1.0

>= 1.1.0 < 2.0

1.1.0, 1.5.6, 1.9.9

~1.0

>= 1.0 < 2.0.0

1.0, 1.4.1, 1.9.9

~1.0.0

>= 1.0.0 < 1.1

1.0.0, 1.0.4, 1.0.9

1.2.1

1.2.1

1.2.1

1.*

>= 1.0 < 2.0

1.0.0, 1.4.5, 1.9.9

1.2.*

>= 1.2 < 1.3

1.2.0, 1.2.3, 1.2.9

Более подробное описание ограничений версии Composer см. В the официальной документации.

Далее, давайте посмотрим, как автоматически загружать зависимости с помощью Composer.

Шаг 4 - Включение скрипта автозагрузки

Поскольку сам PHP не загружает классы автоматически, Composer предоставляет скрипт автозагрузки, который вы можете включить в свой проект, чтобы получить автозагрузку бесплатно. Это значительно облегчает работу с вашими зависимостями.

Единственное, что вам нужно сделать, это включить файл + vendor / autoload.php в ваши PHP-скрипты перед созданием любого класса. Этот файл автоматически генерируется Composer при добавлении первой зависимости.

Давайте попробуем это в нашем приложении. Создайте файл + test.php + и откройте его в текстовом редакторе:

nano test.php

Добавьте следующий код, который приносит файл + vendor / autoload.php, загружает зависимость` + cocur / slugify` и использует его для создания слаг:

test.php

<?php
require __DIR__ . '/vendor/autoload.php';
use Cocur\Slugify\Slugify;

$slugify = new Slugify();

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

Сохраните файл и выйдите из редактора.

Теперь запустите скрипт:

php test.php

Это приводит к выводу + hello-world-this-is-a-long-фразы-and-i-Need-to-Make-a-slug-from-it +.

Зависимости нуждаются в обновлениях, когда выходят новые версии, поэтому давайте посмотрим, как с этим справиться.

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

Всякий раз, когда вы хотите обновить зависимости вашего проекта до более поздних версий, выполните команду + update:

composer update

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

Вы также можете обновить одну или несколько конкретных библиотек, указав их следующим образом:

composer update

Не забудьте зафиксировать изменения в ваших файлах + composer.json и` + composer.lock` после обновления ваших зависимостей, чтобы любой, кто работает в проекте, имел доступ к одним и тем же версиям пакета.

Заключение

Composer - это мощный инструмент, который должен быть у каждого разработчика PHP. В этом руководстве вы установили Composer на Debian 10 и использовали его в простом проекте. Теперь вы знаете, как устанавливать и обновлять зависимости.

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

Related