Глиф Учебники

Composer: как установить и подключить библиотеку

Справочник · PHP · 3 минуты чтения

Composer — менеджер пакетов для PHP: он скачивает готовые библиотеки, следит за их версиями и подключает их к проекту одной строкой. Библиотеки берутся из каталога Packagist.

Установка

PHP должен быть установлен заранее — урок Что такое PHP и как его запустить. Дальше способ зависит от системы.

Windowsустановщик

Скачайте установщик Composer-Setup.exe со страницы загрузки Composer и запустите его. Он найдёт php.exe и пропишет команду composer в Path. Проверяйте в новом окне PowerShell: в окне, открытом до установки, команды ещё нет.

Дальше — для всех случаев

Ubuntu и Debianпакет из репозитория

Bash
sudo apt install composer
composer --version

Версия в репозитории бывает не самой свежей. Самую новую ставят командами со страницы загрузки — как в macOS.

Дальше — для всех случаев

macOS и другие Linuxкоманды с сайта Composer

Выполните в терминале команды со страницы загрузки Composer: они скачивают установщик и проверяют его контрольную сумму.

Проверка — composer --version: команда выводит номер версии Composer. Composer работает в папке проекта и прав root не требует.

Не запускайте Composer от root и через sudo в папке проекта: пакеты могут выполнять свои скрипты при установке, и с правами root они получат доступ ко всей системе. Composer сам предупреждает об этом.

Добавить библиотеку

Перейдите в папку проекта и выполните composer require с именем пакета. Например, библиотека для записи журнала Monolog (вместо ~/my-site — папка вашего проекта):

Bash
cd ~/my-site
composer require monolog/monolog

Composer создаст:

Подключать библиотеки по отдельности не нужно — достаточно одного файла vendor/autoload.php:

PHP
<?php
use Monolog\Logger;
use Monolog\Handler\StreamHandler;

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

$log = new Logger('app');
$log->pushHandler(new StreamHandler(__DIR__ . '/app.log'));
$log->info('Сайт запущен');

Monolog\Logger — полное имя класса: Monolog — пространство имён (приставка библиотеки, чтобы её классы не путались с чужими), Logger — сам класс. use даёт классу короткое имя: дальше в файле можно писать Logger вместо Monolog\Logger.

Главные команды

КомандаЧто делает
composer require пакетдобавить пакет в проект
composer require --dev пакетпакет только для разработки (тесты, отладка)
composer installпоставить пакеты точно по composer.lock
composer updateобновить пакеты до новых допустимых версий и переписать composer.lock
composer remove пакетудалить пакет
composer dump-autoloadпересобрать автозагрузку после правки composer.json

Автозагрузка своих классов

Composer умеет подключать и ваши классы. Допишите в composer.json раздел autoload — по правилу PSR-4 (общепринятое правило: имя класса соответствует пути к файлу):

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

Если в файле уже есть другие разделы (require), добавьте autoload рядом с ними через запятую. Затем выполните composer dump-autoload. Теперь класс App\Models\User ищется в файле src/Models/User.php, и require для него писать не нужно. Файл начинается со строки namespace App\Models;, класс называется так же, как файл.

Git и сервер

Частые ошибки

Пакет — это чужой код, который будет работать на вашем сервере. Берите популярные библиотеки с живой поддержкой и проверяйте точное имя пакета на Packagist: похожие имена бывают у поддельных пакетов.