🧱 Суть

Composer – это менеджер зависимостей для PHP.

Он позволяет:

  • устанавливать сторонние библиотеки
  • управлять версиями пакетов
  • автоматически загружать классы через Autoload
  • фиксировать окружение проекта

Пример:

composer require monolog/monolog

После установки библиотека становится доступной в проекте.

📦 Проблема

1. Ручное подключение библиотек

Раньше зависимости подключали вручную:

require 'library/Logger.php';
require 'library/Database.php';

Проблемы:

  • сложно поддерживать
  • легко забыть файл
  • трудно обновлять версии

2. Конфликты версий

Например:

Проект A → библиотека v1.5
Проект B → библиотека v2.0

Без менеджера зависимостей сложно контролировать совместимость.

3. Нет единого способа загрузки классов

Каждая библиотека могла иметь свою структуру:

lib/
classes/
src/
includes/

Composer решает это через единый Autoload.

✅ Решение

Использовать Composer для:

  • установки пакетов
  • хранения зависимостей
  • автозагрузки классов
  • управления версиями

💻 Код

Установка Composer

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

composer --version

Результат:

Composer version 2.x

Создание проекта

Инициализация Composer:

composer init

После этого создаётся файл:

composer.json

composer.json

Главный файл конфигурации Composer.

Пример:

{
    "require": {
        "monolog/monolog": "^3.0"
    }
}

Здесь:

monolog/monolog

– название пакета.

^3.0

– разрешённая версия.

Установка зависимостей

После создания composer.json:

composer install

Composer:

  1. читает composer.json
  2. скачивает пакеты
  3. создаёт папку vendor
  4. создаёт Autoload

Папка vendor

После установки появляется:

project/

├── src/

├── vendor/
│   ├── autoload.php
│   └── monolog/

└── composer.json

vendor содержит:

  • установленные библиотеки
  • служебные файлы Composer
  • автозагрузчик

Подключение Autoload

В начале приложения:

require_once __DIR__ . '/vendor/autoload.php';

После этого можно использовать классы:

use Monolog\Logger;
 
$log = new Logger('app');

Без дополнительных require.

Добавление пакетов

Команда:

composer require vendor/package

Например:

composer require monolog/monolog

Composer автоматически:

  • скачает пакет
  • добавит его в composer.json
  • обновит composer.lock

Удаление пакета

composer remove vendor/package

Например:

composer remove monolog/monolog

composer.lock

При установке создаётся:

composer.lock

Он фиксирует конкретные версии:

{
    "name": "monolog/monolog",
    "version": "3.0.0"
}

Зачем нужен lock-файл?

composer.json:

какие версии можно использовать

composer.lock:

какие версии реально установлены

Пример:

У разработчика:

monolog 3.0.0

У другого:

monolog 3.2.1

Если нет composer.lock, окружения могут отличаться.

install vs update

composer install

Используется обычно:

  • при клонировании проекта
  • на сервере
  • в CI

Берёт версии из:

composer.lock

composer update

Обновляет зависимости:

composer update

Меняет:

  • версии пакетов
  • composer.lock
    Используется осторожно.

Версии пакетов

Composer использует Semantic Versioning:

MAJOR.MINOR.PATCH

Пример:

3.2.1

Ограничения версий

Точная версия

{
    "package": "1.5.0"
}

Только эта версия.

Любая версия внутри major

{
    "package": "^1.5"
}

Разрешает:

1.5.0
1.6.0
1.9.0

Но не:

2.0.0

Любые минорные обновления

{
    "package": "~1.5"
}

Разрешает:

1.5.x

Autoload через Composer

Composer умеет загружать собственные классы проекта.

Пример структуры:

src/
 └── User.php

Файл:

namespace App;
 
class User
{
}

composer.json:

{
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }
}

После изменения:

composer dump-autoload

Теперь:

use App\User;
 
$user = new User();

работает автоматически.

Полезные команды

Установка зависимостей:

composer install

Обновление:

composer update

Добавление пакета:

composer require package/name

Удаление:

composer remove package/name

Обновление Autoload:

composer dump-autoload

Проверка зависимостей:

composer show

Что обычно хранится в проекте

В Git добавляют:

composer.json
composer.lock

Не добавляют:

vendor/

Потому что зависимости можно восстановить:

composer install

🎯 Вывод

  • Composer – стандартный менеджер зависимостей PHP
  • composer.json описывает нужные пакеты
  • composer.lock фиксирует конкретные версии
  • vendor/ содержит установленные библиотеки
  • autoload.php автоматически подключает классы
  • Composer использует PSR-4 для загрузки собственного кода
  • в современных PHP-проектах ручные require почти не используются

🔗 Связано