Что такое Composer в PHP?

Ответ

Composer — это менеджер зависимостей для PHP, стандарт де-факто для управления библиотеками (пакетами) в проектах. Он решает проблему «адской зависимости», автоматически устанавливая и обновляя необходимые пакеты и их версии.

Как это работает:

  1. В корне проекта создаётся файл composer.json, в котором декларативно описываются требуемые пакеты (зависимости).
  2. Composer читает этот файл, находит пакеты в основном репозитории Packagist.org, разрешает их зависимости и скачивает всё в папку vendor/.
  3. Создаётся файл composer.lock, который фиксирует точные версии всех установленных пакетов, гарантируя воспроизводимость окружения.
  4. Composer предоставляет автозагрузчик классов (vendor/autoload.php), который автоматически подключает классы из установленных пакетов и вашего собственного кода (по стандарту PSR-4).

Пример базового composer.json:

{
    "require": {
        "laravel/framework": "^10.0",
        "guzzlehttp/guzzle": "^7.5"
    },
    "autoload": {
        "psr-4": {
            "App\": "app/"
        }
    },
    "require-dev": {
        "phpunit/phpunit": "^10.0"
    }
}

Основные команды в терминале:

  • composer install — читает composer.lock (или composer.json) и устанавливает все зависимости. Это команда для развёртывания проекта.
  • composer update — обновляет зависимости до последних версий, разрешая их согласно правилам в composer.json, и обновляет composer.lock. Используется во время разработки.
  • composer require vendor/package — удобный способ добавить новую зависимость. Composer добавит её в composer.json и выполнит установку.
  • composer dump-autoload — обновляет автозагрузчик, например, после добавления новых классов в проект.

Итог: Composer — это незаменимый инструмент в экосистеме PHP, который структурирует проекты, упрощает совместную работу и интеграцию стороннего кода.

Ответ 18+ 🔞

Слушай, а давай про эту штуку, без которой в PHP сейчас нихуя не работает. Composer, блядь. Это не просто утилита какая-то, это, ёпта, спасательный круг от ада зависимостей. Представь, раньше ты скачивал библиотеки вручную, кидал их в папку libs/, а потом они друг другу версии конфликтовали, и проект накрывался медным тазом. Так вот, Composer — это такой умный дядя, который за тебя всё это говно находит, ставит и следит, чтобы не подрались.

Как эта мартышлюшка работает:

  1. Ты пишешь в файлик composer.json список пакетов, которые тебе нужны. Типа "хочу Laravel 10-й и Guzzle". Всё, как в магазине — положил в корзину.
  2. Composer смотрит на твой список, идёт на главную барахолку Packagist.org, и начинает там искать. Но самое главное — он смотрит, а чего этим пакетам самим нужно? И качает уже всё дерево зависимостей, всю эту овердохуищу библиотек, аккуратно складывая в папку vendor/.
  3. Чтобы потом не было "а у меня на локалке работало, а на сервере — хуй", он создаёт файл composer.lock. Это типа фотографии на паспорт — там зафиксированы точные версии ВСЕГО, что он поставил. Идеально для воспроизведения.
  4. А ещё он делает тебе волшебный файлик vendor/autoload.php. Подключил его один раз — и классы из всех этих пакетов (и твои собственные, если настроил) автоматом подгружаются. Никаких require_once на триста строк, ёб твою мать!

Вот смотри, как примерно выглядит этот composer.json:

{
    "require": {
        "laravel/framework": "^10.0",
        "guzzlehttp/guzzle": "^7.5"
    },
    "autoload": {
        "psr-4": {
            "App\": "app/"
        }
    },
    "require-dev": {
        "phpunit/phpunit": "^10.0"
    }
}

Команды, которые надо знать, чтобы не выглядеть пидарасом шерстяным:

  • composer install — святая святых. Ставит всё, что в composer.lock. Запускаешь на продакшене или когда только склонил проект. Всё, больше нихуя не думаешь.
  • composer update — вот тут осторожно, ебать! Эта команда говорит: "Эй, Composer, проверь, может, для тех библиотек, что у меня есть, вышли новые версии? Обнови, если можно". Она меняет composer.lock. Делать это просто так, бездумно — это вы ходите по охуенно тонкому льду. Только в процессе разработки и с тестами.
  • composer require vendor/package — золотая команда. Хочешь добавить новую библиотеку? Не лезь руками в JSON. Просто напиши это, и Composer сам добавит запись в composer.json и всё установит. Удобно — пиздец.
  • composer dump-autoload — полезно, когда ты накодил своих классов, а автозагрузчик про них нихуя не знает. Эта команда ему говорит: "Э, бошка, думай! Обнови карту классов".

Итог: Если ты пишешь на PHP и не используешь Composer — ты, прости, ебанько. Это фундамент, на котором стоит вся современная экосистема. Он экономит время, нервы и делает совместную работу не адом, а почти нормальным процессом. Без него — чих-пых тебя в сраку, назад в 2002-й год.