Composer для PHP: полное руководство с примерами

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Что такое Composer и зачем он нужен?

Composer — это менеджер зависимостей для языка программирования PHP. Если вы работали с npm для JavaScript или pip для Python, то принцип работы Composer будет вам знаком. Он позволяет объявлять библиотеки, от которых зависит ваш проект, и автоматически управлять их установкой, обновлением и удалением.

Зачем нужен Composer? В современной PHP-разработке редко пишут всё с нуля. Обычно используются готовые библиотеки: для работы с базами данных (Doctrine, Eloquent), HTTP-запросами (Guzzle), шаблонизаторами (Twig), логированием (Monolog) и т.д. Раньше разработчики скачивали ZIP-архивы, вручную копировали файлы и подключали их через require. Это было неудобно, трудно поддерживать версии и обновлять зависимости. Composer решает все эти проблемы:

  • Автоматическая загрузка (autoloading): Composer генерирует файл автозагрузки, который сам подключает все нужные классы. Вам не нужно писать десятки require_once.
  • Управление версиями: Вы указываете точные версии библиотек (или диапазоны), и Composer следит, чтобы они не конфликтовали между собой.
  • Централизованный репозиторий: Все библиотеки хранятся на Packagist.org — официальном репозитории Composer.
  • Воспроизводимость: Файл composer.lock фиксирует точные версии всех установленных пакетов, что гарантирует одинаковое окружение на всех машинах (разработчика, тестовой, продакшн).

Установка Composer

Установка на Linux / macOS

Самый простой способ — использовать официальный скрипт установки. Откройте терминал и выполните:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

После этого вы получите файл composer.phar. Чтобы сделать команду composer глобальной, переместите его:

sudo mv composer.phar /usr/local/bin/composer

Установка на Windows

Скачайте и запустите установщик с официального сайта. Он сам добавит Composer в системную переменную PATH.

Проверка установки

После установки выполните в терминале:

composer --version

Вы должны увидеть что-то вроде: Composer version 2.7.1 2024-03-11 16:15:07.

Быстрый старт с примером кода

Создадим новый проект и установим библиотеку для работы с датами — nesbot/carbon.

  1. Создайте директорию проекта:
    mkdir my_project
    cd my_project
  2. Инициализируйте Composer:
    composer init

    Вас попросят ввести название проекта, описание, автора и т.д. Можно просто нажимать Enter, соглашаясь с значениями по умолчанию. В итоге будет создан файл composer.json.

  3. Установите библиотеку Carbon:
    composer require nesbot/carbon

    Composer скачает библиотеку и все её зависимости в папку vendor/, а также создаст файл composer.lock и обновит composer.json.

  4. Создайте файл index.php:
    <?php
    require_once __DIR__ . '/vendor/autoload.php';
    
    use Carbon\Carbon;
    
    echo "Сейчас: " . Carbon::now() . "<br>";
    echo "Завтра: " . Carbon::tomorrow() . "<br>";
    echo "Вчера: " . Carbon::yesterday() . "<br>";
    echo "Добавить 5 дней: " . Carbon::now()->addDays(5) . "<br>";
    echo "Разница в днях до Нового года: " . Carbon::now()->diffInDays(Carbon::create(2025, 1, 1)) . " дней";
  5. Запустите скрипт:
    php index.php

    Вы увидите текущую дату и результаты вычислений.

Основные методы/функции Composer

Composer — это консольный инструмент, поэтому все "методы" — это команды, которые вы вводите в терминале. Рассмотрим самые важные из них.

1. composer init

Что делает: Создаёт новый файл composer.json в текущей директории. Это интерактивная команда, которая задаёт вопросы о проекте.

Параметры:

  • --name — имя пакета (формат: vendor/package).
  • --description — описание пакета.
  • --author — автор (формат: Name <email>).
  • --type — тип пакета (library, project, metapackage и др.).
  • --require — список зависимостей в формате JSON.

Пример:

composer init --name="mycompany/myapp" --description="My awesome app" --type="project"

2. composer require

Что делает: Добавляет пакет в секцию require файла composer.json и устанавливает его. Это основная команда для установки зависимостей.

Параметры:

  • package_name — имя пакета (обязательно).
  • version — версия (необязательно). Например: ^5.4 (любая версия от 5.4 до 6.0), ~2.0 (от 2.0 до 2.9), 1.0.* (любая 1.0.x).
  • --dev — установить как зависимость для разработки (в секцию require-dev).
  • --no-update — не обновлять зависимости, только добавить запись в composer.json.

Пример:

composer require monolog/monolog
composer require "guzzlehttp/guzzle:^7.0"
composer require phpunit/phpunit --dev

3. composer install

Что делает: Устанавливает все зависимости, перечисленные в composer.json. Если есть файл composer.lock, Composer использует версии из него. Если файла нет — Composer сам определит лучшие версии и создаст composer.lock.

Параметры:

  • --no-dev — не устанавливать dev-зависимости (используется на продакшене).
  • --optimize-autoloader — оптимизировать автозагрузку (преобразует PSR-0/4 в classmap).
  • --no-scripts — не выполнять скрипты, определённые в composer.json.

Пример:

composer install
composer install --no-dev --optimize-autoloader

4. composer update

Что делает: Обновляет все зависимости до последних версий (с учётом ограничений в composer.json) и обновляет файл composer.lock. Если указать имя пакета, обновится только он.

Параметры:

  • package_name — имя пакета для обновления (необязательно).
  • --with-dependencies — обновлять также зависимости обновляемого пакета.
  • --lock — обновить только composer.lock без изменения файлов в vendor/.

Пример:

composer update
composer update monolog/monolog
composer update --lock

5. composer remove

Что делает: Удаляет пакет из composer.json и из папки vendor/.

Параметры:

  • package_name — имя пакета (обязательно).
  • --dev — удалить из dev-зависимостей.
  • --no-update — только удалить запись из composer.json, не трогая vendor/.

Пример:

composer remove monolog/monolog
composer remove phpunit/phpunit --dev

6. composer show

Что делает: Показывает информацию об установленных пакетах. Без параметров выводит список всех пакетов. С указанием имени показывает детальную информацию.

Параметры:

  • package_name — имя пакета для просмотра деталей.
  • --available — показать доступные версии пакета из Packagist.
  • --latest — показать последние версии.
  • --all — показать все пакеты (включая скрытые).

Пример:

composer show
composer show monolog/monolog
composer show --available monolog/monolog

7. composer search

Что делает: Ищет пакеты в репозитории Packagist по ключевым словам.

Параметры:

  • query — поисковый запрос (обязательно).
  • --only-name — искать только по имени пакета.
  • --type — фильтр по типу пакета.

Пример:

composer search logging
composer search "php template engine"

8. composer dump-autoload

Что делает: Перегенерирует файл автозагрузки (vendor/autoload.php). Полезно, если вы вручную добавили классы в composer.json (секция autoload) или изменили структуру файлов.

Параметры:

Рекомендаций