Что такое секция require в файле composer.json?

«Что такое секция require в файле composer.json?» — вопрос из категории PHP Core, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Секция require в файле composer.json — это обязательный раздел, который определяет список пакетов (зависимостей), необходимых для работы вашего PHP-проекта в production-среде.

Синтаксис и пример:

{
    "require": {
        "php": ">=8.1",
        "laravel/framework": "^10.0",
        "guzzlehttp/guzzle": "^7.0",
        "ext-json": "*"
    }
}

Ключевые моменты:

  • Формат: "vendor/package-name": "version-constraint".
  • Установка: После добавления зависимостей в require необходимо выполнить composer install. Composer скачает указанные пакеты и их зависимости, создаст vendor/ директорию и сгенерирует composer.lock.
  • Ограничения версий:
    • ^10.0 — совместимо с версиями >=10.0.0 и <11.0.0 (рекомендуемый формат).
    • ~10.5.0 — совместимо с >=10.5.0 и <10.6.0.
    • "8.*" или "8.x" — любая версия в мажорной ветке 8.
    • "dev-main" — установка из конкретной ветки репозитория.
  • Специальные зависимости:
    • "php" — указывает минимальную требуемую версию PHP.
    • "ext-json" — требует наличие PHP-расширения json.
  • Отличие от require-dev: Зависимости для разработки (тестирование, статический анализ, линтинг) указываются в отдельной секции "require-dev". Они не устанавливаются в production-среде при использовании флага --no-dev.

Практическое использование:

  1. Добавить пакет: composer require vendor/package.
  2. Обновить зависимости после ручного изменения composer.json: composer update.
  3. Установить зависимости из существующего composer.lock: composer install (гарантирует одинаковые версии у всех разработчиков).