Поиск по сайту:

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


Введение

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

В этом руководстве показано, как установить и начать работу с Composer на сервере Ubuntu 14.04.

Предпосылки

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

  • Сервер под управлением Ubuntu 14.04
  • Доступ к серверу в качестве обычного пользователя с разрешением sudo

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

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

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

  1. sudo apt-get update

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

  1. sudo apt-get install curl php5-cli git

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

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

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

  1. 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

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

  1. 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 был успешно установлен в вашей системе.

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

Шаг 3 — Создание файла composer.json

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

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

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

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

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

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

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

  1. cd ~
  2. mkdir slugify
  3. cd slugify

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

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

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

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

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

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

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

  1. composer require cocur/slugify
Output
Using 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:

  1. ls -l
Output
total 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 не должна быть передана в систему управления версиями — вам нужно только включить файлы composer.json и composer.lock.

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

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

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

  1. cat composer.json
  1. {
  2. "require": {
  3. "cocur/slugify": "^1.3"
  4. }
  5. }

Вы могли заметить специальный символ ^ перед номером версии в composer.json. Composer поддерживает несколько различных ограничений и форматов для определения требуемой версии пакета, чтобы обеспечить гибкость, а также сохранить стабильность вашего проекта. Оператор вставки (^), используемый автоматически сгенерированным файлом composer.json, является рекомендуемым оператором для максимальной совместимости после семантического управления версиями. В этом случае он определяет 1.3 как минимальную совместимую версию и разрешает обновления до любой будущей версии ниже 2.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 ознакомьтесь с их официальной документацией.

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

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

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

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

  1. vim test.php
  1. <?php
  2. require __DIR__ . '/vendor/autoload.php';
  3. use Cocur\Slugify\Slugify;
  4. $slugify = new Slugify();
  5. echo $slugify->slugify('Hello World, this is a long sentence and I need to make a slug from it!');

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

  1. php test.php

Это должно привести к выводу hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it.

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

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

  1. composer update

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

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

  1. composer update vendor/package vendor2/package2

Заключение

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

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

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