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

Published by Leave your thoughts

Вступление

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

Зачем нужен Composer? Предположим, есть проект приложения, зависящий от нескольких библиотек, которые в свою очередь могут также зависеть от других библиотек. После того, как эти зависимости будут объявлены в файле .json, Composer отследит эти библиотеки и установит их.

Данное руководство демонстрирует установку Composer на виртуальный выделенный сервер, его работу и полезные функции. Для выполнения действий в руководстве используются предустановленные сервер Ubuntu и LAMP stack. Что касается индивидуальных требований Composer, он одинаково успешно запускается на Linux, OS X и Windows, но ему необходим PHP 5.3.2+.

Убедитесь, что все зависимости установлены:

sudo apt-get install php5 git php5-curl

Установка Composer

Для начала нужно загрузить Composer в папку проекта. Для этого создайте пустую папку в /var/www (root-папка веб-сервера Apache) и назовите ее my_project:

cd /var/www
mkdir my_project
cd my_project

Скачайте Composer в данную папку с помощью команды:

curl -sS https://getcomposer.org/installer | php

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

All settings correct for using Composer
Downloading...
Composer successfully installed to: /var/www/my_project/composer.phar
Use it: php composer.phar

Теперь, перейдя в папку проекта, можно увидеть всего один файл, composer.phar; это архивный файл PHP, который можно запустить при помощи командной строки.

Чтобы загрузить Composer в папку проекта, не выходя при этом из текущего каталога, укажите опцию —install-dir,.

curl -sS https://getcomposer.org/installer | php -- --install-dir=/var/www/папка_проекта

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

php composer.phar

 Использование Composer

Для правильной работы Composer в проекте понадобится один файл — composer.json. Этот файл содержит описание зависимостей проекта. Предположим, проект зависит от библиотеки Some Library, которая помогает взаимодействовать с Some API. Итак, создайте файл:

nano composer.json

В него нужно внести следующее:

{
"require": {
"somevendor/somelibrary": "1.2.3"
}
}

Сохраните изменения и закройте файл. Приведенный выше простой блок кода сообщает о том, что проекту необходима библиотека (по имени somelibrary), созданная вендором somevendor. Затем указывается нужная версия (в данном случае это 1.2.3). В данной строке можно не только указать необходимую версию, но и использовать подстановочные знаки. Но как получить эту информацию о пакете?

Существует большой сайт, где можно найти множество библиотек со всей информацией, которую необходимо указать в файле composer.json — это Packagist.

Подстановочные знаки для указания версии используются, например, так:

"somevendor/somelibrary": "1.2.*"

Данный шаблон соответствует любой версии, которая начинается с 1.2 (т.е., 1.2.0, 1.2.1, и так далее). Кроме того, можно указать сразу несколько нужных библиотек. Это делается путем добавления строк в блок require:

"require": {
"somevendor/somelibrary": "1.2.3",
"acme/foo": "1.0"
}

Указав некоторые зависимости проекта, запустите команду, с помощью которой Composer загрузит и установит все необходимое:

php composer.phar install

Эта команда найдет последние версии пакетов, которые соответствуют указанным номерам, а затем скачает их в папку /vendor в проекте. В данном случае нужный файл можно найти в папке vendor/somevendor/somelibrary. Кроме того, Composer создает файл composer.lock, в котором он указывает точные версии установленных пакетов и синхронизирует проект с ними.

Цель файла .lock — ограничить Composer заданными пользователем версиями пакетов и предотвратить установку других версий. Потому при запуске команды install Composer сначала проверит этот файл и установит то, что указано в нем, а не то, что содержит файл .json. Это очень удобно в случае если другие пользователи должны будут также развернуть этот проект, а список зависимостей очень строг; файл .lock гарантирует использование одинаковых версий библиотек.

Как уже было показано, если файла .lock не существует, Composer создаст такой файл на основе данных файла .json. Но при необходимости переписать содержимое .lock и обновить зависимости до более новых версий можно использовать команду:

php composer.phar update

Данная строка определит последние стабильные версии необходимых библиотек, указанных в файле composer.json, и перепишет файл composer.lock согласно новым версиям. Чтобы обновить определенную библиотеку (что случается чаще), введите команду update и укажите пакеты, которые нужно обновить, используя следующий формат:

php composer.phar update вендор/пакет1 вендор/пакет2

Также можно использовать подстановочные знаки, чтобы обновить все пакеты определенного вендора:

php composer.phar update вендор/*

Автозагрузка

Composer обладает еще одной удобной функцией — функцией автоматической загрузки. Для библиотек, предоставляющих информацию автозагрузки, в папке /vendor Composer автоматически создает файл autoload.php, который можно включить в проект. После этого появляется возможность напрямую использовать классы из этих библиотек. В проекте PHP нужно просто указать:

require 'vendor/autoload.php';

Готово!

Итоги

Composer — очень распространенный в мире PHP инструмент. Множество проектов и фреймворков используют этот менеджер

зависимостей для установки и управления всеми необходимыми пакетами.

Tags: , , , ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>