Composer — штука, которая спасает тебя от ручного скачивания библиотек, версий и кучи zip-архивов с непонятных сайтов. В PHP-мире он — как npm для Node или pip для Python. Если ты до сих пор делаешь git clone и require_once для каждой либы — ставим Composer.
Шаг 0. Подготовка
Сначала обновим пакеты и накинем нужные зависимости:
sudo apt update
sudo apt install wget php-cli php-zip unzip
Без php-cli Composer будет просто смотреть на тебя и молчать.
Шаг 1. Скачиваем установщик
wget -O composer-setup.php https://getcomposer.org/installer
Получишь файл composer-setup.php в текущей папке.
Шаг 2. Ставим глобально
Чтобы composer работал как обычная команда:
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
Теперь можно просто писать:
composer
и он отзовётся.
Шаг 3. Локальная установка (по проекту)
Если хочешь Composer только для конкретного проекта:
sudo php composer-setup.php --install-dir=/path/to/project
В проекте появится composer.phar, и команды будут такие:
php composer.phar ...
Да, чуть длиннее, но зато изолировано.
Шаг 4. Обновление Composer
Когда он устареет (а это случится быстрее, чем ты подумаешь):
sudo composer self-update
Быстрый пример работы
Создаём проект:
mkdir ~/my-first-composer-project
cd ~/my-first-composer-project
Ставим пакет Carbon:
composer require nesbot/carbon
Composer создаст composer.json, composer.lock и папку vendor.
vendor— библиотеки.composer.json— список зависимостей.composer.lock— зафиксированные версии.
Автозагрузка
Создай testing.php:
<?php
require __DIR__ . '/vendor/autoload.php';
use Carbon\Carbon;
printf("Now: %s", Carbon::now());
Запусти:
php testing.php
Получишь время. Красиво.
Обновление зависимостей проекта
composer update
Если в composer.json версия пакета позволяет, обновит до свежей.
В итоге
Composer — это как автомат Калашникова в PHP. Работает почти всегда, но если руки кривые, можно себе выстрелить в ногу. Не обновляй зависимости на проде без тестов — так можно положить проект, потому что новая версия библиотеки решила, что она теперь требует PHP 8.
0 комментариев