Composer — это кроссплатформенный инструмент, позволяющий управлять зависимостями в проектах, которые написаны на языке программирования PHP.
С помощью Composer можно управлять множеством библиотек и фреймворков, которые называются «пакетами». Установив необходимые пакеты, можно расширить стандартные функции PHP, тем самым ускорив и упростив разработку. При этом все установленные пакеты становятся зависимостями проекта.
Таким образом, Composer можно считать полноценным менеджером зависимостей, которые характерны для множества языков программирования.
Помимо этого у Composer имеется полноценный реестр с репозиториями пакетов, именуемый Packagist — через него выполняется поиск, загрузка и установка необходимых пакетов.

Официальный реестр пакетов для Composer
В этом руководстве мы подробно рассмотрим процесс установки Composer в операционной системе Ubuntu с последующим использованием в проектах на языке программирования PHP.
Общий набор необходимых инструментов будет следующим:
- Операционная система Ubuntu 22.04, запущенная на облачном сервере Timeweb Cloud
- Интерпретатор PHP версии 8.1.2
- Менеджер зависимостей Composer версии 2.8.2
Установка
Подготовка
Рекомендуется сперва обновить список существующих репозиториев APT:
После этого потребуется установить пакеты, которые обеспечат дальнейшую загрузку и использование Composer:
В числе таких пакетов:
curl. Утилита для выполнения HTTP-запросов.php-cli. Интерпретатор для запуска PHP-скриптов.unzip. Утилита для распаковки ZIP-архивов.
Флаг -y необходим для положительного ответа на все вопросы во время установки.
Загрузка
Установка Composer выполняется автоматически с помощью PHP-скрипта, который создали сами разработчики менеджера зависимостей. Таким образом, установка Composer сводится к загрузке и запуску этого скрипта.
Загрузить установочный скрипт можно с официального сайте Composer, сделав соответствующий HTTP-запрос:
-
Флаг
-sSуказывает на запускcurlв тихом режиме, когда не выводятся никакие сообщения, кроме ошибок. -
Флаг
-oуказывает на директорию, в которую будет помещен загруженный файл, а также его имя, под которым он будет сохранен в системе.
Чтобы убедиться, что файл действительно был загружен, можно проверить содержимое текущей директории:
В консольном терминале появится список файлов, среди которых будет установочный скрипт:
Установка
В этом руководстве выполняется глобальная установка Composer. То есть менеджер зависимостей будет запускаться в любом каталоге без необходимости явного указания абсолютного пути.
Для глобальной установки Composer нужно выполнить загруженный PHP-скрипт, передав ему несколько дополнительных параметров:
-
Флаг
--install-dirуказывает на директорию, в которую будет установлен Composer. -
Флаг
--filenameуказывает на имя бинарного файла, к которому можно будет обращаться из терминала консоли.
В данном случае Composer устанавливается в системную директорию для бинарных файлов — /usr/local/bin.
После выполнения скрипта установки в консольном терминале появится результат его работы:
Так как установочный скрипт больше не нужен, его можно удалить:
Проверка
Если попытаться запустить Composer в первый раз:
То в консольном терминале появится сообщение с вопросом:
Composer сообщает о том, что его запуск от имени root-пользователя выполняется на свой страх и риск. Таким образом Composer создает предупреждает, но позволяет продолжить работу от имени администратора.
В рамках этого руководства мы будет работать с Composer как есть, поэтому соглашаемся с вопросом в консольном терминале. После этого в терминале появится стартовое приветствие, а также список возможных опций и команд с их кратким описанием.

Приветственное сообщение Composer со списком возможных опций и команд
Теперь Composer полностью установлен в систему, а значит его можно использовать для управления зависимостями любых проектов на PHP.
VDS и VPS
биллингом по всему миру: Россия, Азия и Европа.
Конфигурация
Основной файл, через который выполняется управление зависимостями, — composer.json. Внутри него описываются пакеты, необходимые для корректной работы проекта.
Таким образом, Composer следует подходу Infrastructure as Code (Iac), описывая локальную инфраструктуру проекта через конфигурационный файл, а не через ручное редактирование настроек в каком-либо графическом интерфейсе.
Тем не менее, Composer позволяет управлять файлом конфигурации не только вручную посредством редактирования его содержимого в текстовом редакторе, но и с помощью команд в консольном терминале — то есть в более интерактивном виде.
Основные команды
Использование Composer сопряжено с использованием нескольких базовых команд, каждая из которых в том или ином виде взаимодействует с конфигурационным файлом composer.json:
-
init. Инициализирует проект. -
require. Подключает пакет. -
install. Устанавливает зависимости. -
update. Обновляет пакеты.
На самом деле Composer имеет намного больше команд, однако именно эти используются чаще всего.
Постановка задачи
Предположим, мы работаем над небольшим проектом, который выполняет различные строковые преобразования. Поэтому нам в качестве зависимости нужна некая специфическая библиотека, содержащая ряд функций для изменения содержимого строк.
В этом руководстве мы будем выполнять общую для многих языков программирования функцию slugify, которая преобразует последовательность слов в одно длинное слово, содержащее только строчные ASCII-символы и дефисы.
Чаще всего slugify используется для преобразования произвольных заголовков в формат URL-адресов без пробелов.
Например, заголовок «How to deal with Composer» с помощью функции slugify можно преобразовать в надпись «how-to-deal-with-composer», которая может использовать для URL-адреса страницы руководства по установке — «https://timeweb.cloud/tutorials/php/how-to-deal-with-composer».
А еще результат функции slugify похож на стиль именования переменных Kebab Case:
Чтобы не писать эту функцию самостоятельно, мы воспользуемся Composer и найдем соответствующую библиотеку в официальном реестре пакетов, включим ее в список зависимостей и позволим Composer автоматически выполнить ее загрузку, установку и включение в проект.
Создание каталога
Сперва создадим отдельный каталог для PHP-проекта:
После чего перейдем в него:
Здесь будет размещаться как исходный код проекта, так и файлы необходимых зависимостей.
Поиск библиотеки
Чтобы найти необходимую библиотеку, нам потребуется:
-
Открыть в браузере страницу упомянутого ранее официального реестра пакетов Composer.
-
Ввести в поиск «slugify».
-
Найти наиболее подходящий пакет исходя из его параметров и описания.
Интересно, что в поиске дополнительно выводятся ключевые показатели каждого из доступных пакетов:
-
Количество установок через Composer (справа вверху)
-
Количество звезд на GitHub (справа внизу)
На самом деле есть очевидная закономерность, что более популярные пакеты работают стабильнее, ведь их использует большее число людей.

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

Страница пакета ocur/slugify в реестре пакетов Composer
Таким образом можно искать и подбирать подходящие пакеты для PHP-проекта, которые впоследствии будут использоваться в качестве зависимости для предоставления специфических функций.
Установка зависимости
Для того, чтобы установить необходимый пакет, нужно воспользоваться командой require, которая либо записывает зависимость в конфигурационный файл composer.json, либо создает его, если его еще нет:
В этом руководстве используется cocur/slugify версии 4.6.0.
После выполнения этой команды в терминале консоли может появиться ошибка, сообщающая о недостающих системных библиотеках:
Этот консольный вывод сообщает о недостающей системной библиотеке ext-mbstring, которая требуется для корректной работы cocur/slugify.
Это библиотеку можно вручную попытаться найти в пакетной менеджере APT:
После этого в консольном терминале появится список совпадений по названию:
Можно заметить, что самое первое совпадение и есть искомая библиотека. Поэтому устанавливаем ее:
После завершения установки недостающей системной библиотеки снова запускаем установку пакета для Composer:
На этот раз консольный вывод должен сообщить об успешной установке:
Теперь проверим содержимое директории проекта:
Можно заметить новые сгенерированные файлы:
Каждый файл и каталог имеет свое закономерное предназначение:
-
composer.json— файл с информацией о необходимых зависимостях -
composer.lock— файл с информацией об уже установленных зависимостях -
vendor— установленные зависимости проекта
Если вы используете систему контроля версий (например, Git), папку
vendorнужно исключить из сохранения в репозиторий.
Интереснее всего взглянуть на содержимое конфигурационного файла:
Внутри он выглядит так:
Можно заметить отдельный блок require, в котором указан необходимый пакет cocur/slugify версии 4.6.
С помощью специальных символов можно указывать допустимые диапазоны версий, требуемых для корректной работы проекта — все они следуют общепринятому соглашению Semantic Versioning 2.0.0:
|
Ограничитель |
Диапазон |
Возможные значения |
|
1.5.2 |
1.5.2 |
1.5.2 |
|
^1.0 |
от 1.0 до 2.0 |
1.0, 1.4.7, 1.9.9 |
|
^1.1.0 |
от 1.1.0 до 2.0 |
1.1.0, 1.2.5, 1.9.9 |
|
~1.0 |
от 1.0 до 2.0.0 |
1.0, 1.5.2, 1.9.9 |
|
~1.0.0 |
от 1.0.0 до 1.1 |
1.0.0, 1.0.2, 1.0.9 |
|
1.* |
от 1.0 до 2.0 |
1.0.0, 1.3.2, 1.9.9 |
|
1.2.* |
от 1.2 до 1.3 |
1.2.0, 1.2.4, 1.2.9 |
Более подробную информацию о возможных значениях версий можно посмотреть на специальной странице в официальной документации Composer.
Использование
Подключение
После того, как зависимость была установлена, ее можно включить в код проекта с помощью автоматически сгенерированного скрипта автозагрузки autoload.php, который находится в директории vendor.
При включении этого скрипта в PHP-приложение функции и классы существующих зависимостей станут доступны изнутри.
Поэтому давайте создадим основной файл нашего приложения:
И наполним его следующим содержимым:
Теперь скрипт можно запустить:
В консольном терминале появится следующий вывод:
Обновление
В Composer есть возможность проверить наличие новых версий библиотек из списка зависимостей на основе диапазонов версий, заданных в конфигурационном файле composer.json:
Либо можно выполнить обновление избирательно, явно указав имя пакета:
Установка
Если в директории вашего PHP-проекта есть файл composer.json, но при этом еще не установлены указанные в нем зависимости, то их нужно установить.
Давайте сперва удалим все имеющиеся пакеты и связанную с ними информацию:
Флаг -R необходим для рекурсивного удаления файлов и директорий.
После этого попробуем запустить скрипт:
В консоли появится закономерная ошибка:
Теперь повторно установим зависимости на основе данных из конфигурационного файла:
После чего снова запустим скрипт:
В консоли появится привычный результат без каких-либо ошибок:
Разверните свой PHP-проект на VDS
477 ₽/мес
657 ₽/мес
Заключение
Установка Composer в операционной системе Ubuntu 22.04 выполняется автоматически с помощью установочного скрипта, написанного на PHP. Этот скрипт необходимо предварительно скачать с официального сайта Composer.
Соответственно, для работы с Composer в системе должен быть установлен интерпретатор PHP.
Несмотря на то, что в Composer есть множество команд для управления конфигурационным файлом composer.json, на практике используется лишь несколько базовых:
-
composer init -
composer require -
composer install -
composer update
Исчерпывающую информацию об использовании Composer можно найти в официальной документации.
