Что такое 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.
- Создайте директорию проекта:
mkdir my_project cd my_project - Инициализируйте Composer:
composer initВас попросят ввести название проекта, описание, автора и т.д. Можно просто нажимать Enter, соглашаясь с значениями по умолчанию. В итоге будет создан файл
composer.json. - Установите библиотеку Carbon:
composer require nesbot/carbonComposer скачает библиотеку и все её зависимости в папку
vendor/, а также создаст файлcomposer.lockи обновитcomposer.json. - Создайте файл
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)) . " дней"; - Запустите скрипт:
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) или изменили структуру файлов.
Параметры:
--optimizeТакже в библиотеке
Отправка SMS на PHP: API библиотеки для интеграции
Работа с S3 и облачными хранилищами в Swift (iOS/macOS): библиотека AWSS3
Криптография в Java: шифрование и хеширование — полное руководство
Геолокация и карты в C++: библиотеки libcurl, nlohmann/json, Leaflet
libuv для C++: полное руководство с примерами
Рекомендаций