Composer в PHP: установка пакетов без ручного копирования

Composer — это стандартный менеджер зависимостей в PHP. Он нужен, чтобы не скачивать библиотеки вручную, не копировать папки в проект и не подключать десятки файлов через require. В этом уроке создадим маленький проект, установим пакет через composer require и подключим автозагрузку

Если PHP без Composer похож на набор отдельных файлов, то Composer делает проект собранным и воспроизводимым

Что получится в конце

Мы установим пакет nesbot/carbon и выведем дату:

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

use Carbon\Carbon;

echo Carbon::now()->format('d.m.Y H:i');

Запуск:

php index.php

Проверяем PHP и Composer

Сначала PHP:

php -v

Потом Composer:

composer --version

Если Composer не установлен, используйте официальный сайт:

https://getcomposer.org/download/

Не ставьте Composer из случайных архивов. Это инструмент, который будет скачивать код в ваши проекты

Создаем проект

mkdir php-composer-demo
cd php-composer-demo

Инициализировать проект можно командой:

composer init

Но для первого примера проще сразу установить пакет:

composer require nesbot/carbon

После команды появятся:

composer.json
composer.lock
vendor/

composer.json описывает зависимости проекта. composer.lock фиксирует точные версии. vendor содержит скачанные пакеты

Подключаем autoload

Создайте index.php:

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

use Carbon\Carbon;

echo Carbon::now()->format('d.m.Y H:i');

Команда:

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

подключает автозагрузчик Composer. После этого PHP умеет находить классы установленных библиотек

Запустите:

php index.php

Что внутри composer.json

Файл будет похож на:

{
  "require": {
    "nesbot/carbon": "^3.0"
  }
}

Версия может отличаться. Смысл простой: проект требует пакет nesbot/carbon

Не редактируйте vendor руками. Если нужна зависимость, используйте Composer. Если зависимость больше не нужна, удаляйте через Composer

composer install и composer update

Команда:

composer install

ставит зависимости по composer.lock. Ее обычно используют после скачивания проекта

Команда:

composer update

обновляет зависимости в рамках правил composer.json и переписывает lock-файл. Новичку не стоит запускать update без причины, особенно в рабочем проекте

Практическое правило: получили проект — composer install; хотите добавить пакет — composer require

Что коммитить

В обычном PHP-проекте коммитят:

composer.json
composer.lock

Папку vendor чаще не коммитят, потому что ее можно восстановить командой composer install. На shared-хостинге иногда приходится загружать vendor, но в репозитории это все равно обычно лишний шум

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

composer не найден. Composer не установлен или не добавлен в PATH

vendor/autoload.php not found. Вы не запускали composer install или находитесь не в той папке

Class not found. Проверьте require vendor/autoload.php, namespace и пакет

Версии конфликтуют. Один пакет требует одну версию зависимости, другой — другую. Смотрите текст ошибки Composer, он обычно объясняет конфликт

Что может быть еще интересно по этой теме

Composer нужен для маленького сайта? Если сайт состоит из одного файла, нет. Но как только появляются библиотеки, автозагрузка и структура проекта, Composer становится нормой

Composer и npm похожи? По роли да: оба управляют зависимостями. Но экосистемы и файлы разные

Можно ли использовать Composer на хостинге? Да, если хостинг дает shell-доступ. Если нет, зависимости часто ставят локально и загружают проект вместе с vendor

Нужен ли Composer для Laravel? Да. Laravel-проекты управляются через Composer

Что открыть дальше

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x