Как установить и использовать Composer в Ubuntu 14.04

Вступление

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

Из этого туториала вы узнаете, как установить Composer и начать его работу на сервере Ubuntu 14.04.

Предпосылки

Для этого урока вам понадобятся:

  • Сервер под управлением Ubuntu 14.04

  • Доступ к серверу как обычный пользователь сsudo permission

[[step-1 -—- install-the-dependencies]] == Шаг 1. Установка зависимостей

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

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

sudo apt-get update

Теперь давайте установим зависимости. Нам понадобитсяcurl для загрузки Composer иphp5-cli для его установки и запуска. git используется Composer для загрузки зависимостей проекта. Все можно установить с помощью следующей команды:

sudo apt-get install curl php5-cli git

Теперь вы можете перейти к следующему шагу.

[[step-2 -—- download-and-install-composer]] == Шаг 2. Загрузка и установка Composer

Установка Composer действительно проста и может быть выполнена с помощью одной команды:

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

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

Output#!/usr/bin/env php
All settings correct for using Composer
Downloading...

Composer successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

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

composer

И вы должны получить вывод, похожий на этот:

Output   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.0-dev (9859859f1082d94e546aa75746867df127aa0d9e) 2015-08-17 14:57:00

Usage:
 command [options] [arguments]

Options:
 --help (-h)           Display this help message
 --quiet (-q)          Do not output any message
 --verbose (-v|vv|vvv) Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
 --version (-V)        Display this application version
 --ansi                Force ANSI output
 --no-ansi             Disable ANSI output
 --no-interaction (-n) Do not ask any interactive question
 --profile             Display timing and memory usage information
 --working-dir (-d)    If specified, use the given directory as working directory.

. . .

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

[.note] # Если вы предпочитаете иметь отдельные исполняемые файлы Composer для каждого проекта, который вы можете разместить на этом сервере, вы можете просто установить его локально для каждого проекта. Этот метод также полезен, когда пользователь вашей системы не имеет разрешения на установку программного обеспечения в масштабе всей системы. В этом случае установку можно выполнить с помощьюcurl -sS https://getcomposer.org/installer | php - это сгенерирует файлcomposer.phar в вашем текущем каталоге, который можно запустить с помощьюphp composer.phar [command].
#

[[step-3 -—- generate-the-composer-json-file]] == Шаг 3. Создание файла composer.json

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

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

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

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

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

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

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

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

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

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

cd ~
mkdir slugify
cd slugify

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

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

Packagist Search: easy-slug/easy-slug

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

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

Вы заметите, что пакеты на Packagist имеют имяvendor и имяpackage. Каждый пакет имеет уникальный идентификатор (пространство имен) в том же формате, который Github использует для своих репозиториев:vendor/package. Библиотека, которую мы хотим установить, использует пространство именcocur/slugifyThe namespace is what we need in order to require the package in our project.

Требование пакета

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

composer require cocur/slugify
OutputUsing version ^1.3 for cocur/slugify
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing cocur/slugify (v1.3)
    Downloading: 100%

Writing lock file
Generating autoload files

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

ls -l
Outputtotal 12
-rw-rw-r-- 1 sammy sammy   59 Sep  9 16:22 composer.json
-rw-rw-r-- 1 sammy sammy 2835 Sep  9 16:22 composer.lock
drwxrwxr-x 4 sammy sammy 4096 Sep  9 16:22 vendor

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

[.note] # При установке проекта, который уже содержит файлcomposer.json, вам необходимо запуститьcomposer install, чтобы загрузить зависимости проекта.
#

Понимание ограничений версии

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

cat composer.json

composer.json

{
    "require": {
        "cocur/slugify": "^1.3"
    }
}

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

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

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

скованность Смысл Примеры разрешенных версий

^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, проверьте ихofficial documentation.

[[step-4 -—- including-the-autoload-script]] == Шаг 4. Включение скрипта автозагрузки

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

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

Вернемся к примеру приложенияslugify. Мы создадим скриптtest.php, в котором будем использовать библиотекуcocur/slugify:

vim test.php

test.php

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-sentence-and-i-need-to-make-a-slug-from-it.

[[step-5 -—- update-the-project-dependencies]] == Шаг 5 - Обновление зависимостей проекта

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

composer update

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

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

composer update vendor/package vendor2/package2

Заключение

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

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

В этом руководстве рассказывается об основах работы с Composer в Ubuntu 14.04.

Related