Урок 13

Composer — менеджер зависимостей PHP

20 мин

Что такое Composer?

Composer — это менеджер зависимостей для PHP. Он позволяет легко устанавливать и использовать библиотеки (пакеты) в вашем проекте.

Представьте: вам нужна библиотека для валидации email. Вместо того чтобы скачивать файлы вручную, вы просто пишете:

composer require respect/validation

И Composer автоматически скачает библиотеку и настроит автозагрузку!

Зачем нужен Composer?

  • Установка библиотек — тысячи готовых пакетов
  • Автозагрузка классов — не нужно писать require вручную
  • Управление версиями — можно указать нужную версию пакета
  • Стандарт индустрии — в 2026 все PHP проекты используют Composer

Установка Composer

Windows

  1. Скачайте установщик: getcomposer.org/Composer-Setup.exe
  2. Запустите установщик
  3. Следуйте инструкциям

Mac/Linux

# Скачать установщик
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

# Установить
php composer-setup.php

# Переместить в глобальную папку (опционально)
sudo mv composer.phar /usr/local/bin/composer

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

Откройте терминал и выполните:

composer --version

Должно показать версию, например: Composer version 2.7.0

Инициализация проекта

В папке вашего проекта (my-blog) выполните:

composer init

Composer задаст несколько вопросов. Можете нажимать Enter для значений по умолчанию.

В итоге создастся файл composer.json — это конфигурация вашего проекта.

Установка пакета

Давайте установим простую библиотеку для работы с переменными окружения:

composer require vlucas/phpdotenv

Composer:

  1. Скачает пакет vlucas/phpdotenv
  2. Создаст папку vendor/ с кодом библиотеки
  3. Создаст файл composer.lock (фиксирует версии)
  4. Обновит composer.json

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

Composer автоматически создаёт файл vendor/autoload.php. Подключите его в начале config.php:

<?php
declare(strict_types=1);

// Автозагрузка классов из Composer
require_once __DIR__ . "/../../vendor/autoload.php";

// Теперь можно использовать установленные пакеты
use Dotenv\Dotenv;

// Загружаем .env файл
$dotenv = Dotenv::createImmutable(__DIR__ . "/../../");
$dotenv->load();

// ... остальной код
?>

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

Теперь вместо нашей функции loadEnv() можно использовать профессиональную библиотеку:

// Получаем переменные из .env
$db_host = $_ENV["MYSQL_HOST"] ?? Dotenv::createImmutable(__DIR__ . "/../../")->load();
$db_name = $_ENV["MYSQL_DATABASE"] ?? "blog";
$db_user = $_ENV["MYSQL_USER"] ?? "blog_user";
$db_pass = $_ENV["MYSQL_PASSWORD"] ?? "blog_pass";

Или проще:

$dotenv = Dotenv::createImmutable(__DIR__ . "/../../");
$dotenv->load();

$db_host = $_ENV["MYSQL_HOST"] ?? "mysql";
$db_name = $_ENV["MYSQL_DATABASE"] ?? "blog";
$db_user = $_ENV["MYSQL_USER"] ?? "blog_user";
$db_pass = $_ENV["MYSQL_PASSWORD"] ?? "blog_pass";

Структура проекта с Composer

my-blog/
├── .env
├── composer.json          ← конфигурация Composer
├── composer.lock          ← зафиксированные версии
├── vendor/                ← установленные пакеты (не коммитить в Git!)
│   ├── autoload.php       ← автозагрузка
│   └── ...
├── docker-compose.yml
├── docker/
└── public/
    └── ...

Важно: .gitignore

Создайте файл .gitignore в корне проекта:

# Composer
/vendor/
composer.lock

# .env файлы (содержат пароли!)
.env

# Docker
mysql_data/

Эти файлы не должны попадать в Git!

Популярные пакеты

Вот несколько полезных пакетов для вашего блога:

  • vlucas/phpdotenv — работа с .env файлами
  • respect/validation — валидация данных
  • monolog/monolog — логирование
  • symfony/console — CLI команды

Что дальше?

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

Совет: Изучите packagist.org — это репозиторий всех PHP пакетов. Там тысячи готовых решений для любых задач!

Мы используем файлы cookie для улучшения работы сайта и персонализации контента. Продолжая использовать сайт, вы соглашаетесь с использованием cookies в соответствии с нашей Политикой конфиденциальности.