Spec-Zone.ru › Composer

Зависимости платформы Composer

Что такое зависимости платформы

Composer предоставляет информацию об окружении, в котором он работает, в виде виртуальных пакетов. Это позволяет другим пакетам определять зависимости (require, conflict, provide, replace) от различных аспектов платформы, таких как PHP, расширения или системные библиотеки, включая ограничения по версиям.

При требовании одного из пакетов платформы код не устанавливается. Номера версий пакетов платформы выводятся из среды, в которой выполняется Composer, и их нельзя обновлять или удалять. Однако их можно перезаписать для целей разрешения зависимостей с помощью конфигурации платформы.

Например: Если вы выполняете composer update с интерпретатором PHP версии 7.4.42, Composer автоматически добавляет в пул доступных пакетов пакет под названием php и присваивает ему версию 7.4.42.

Вот как пакеты могут добавить зависимость от используемой версии PHP:

{
    "require": {
        "php": ">=7.4"
    }
}

Composer проверит это требование по отношению к текущей используемой версии PHP при выполнении команды composer.

Различные типы пакетов платформы

Существуют следующие типы пакетов платформы, от которых можно зависеть:

  1. PHP (php и подтипы: php-64bit, php-ipv6, php-zts php-debug)
  2. Расширения PHP (ext-*, например ext-mbstring)
  3. Библиотеки PHP (lib-*, например lib-curl)
  4. Composer (composer, composer-plugin-api, composer-runtime-api)

Чтобы увидеть полный список пакетов платформы, доступных в вашей среде, вы можете выполнить php composer.phar show --platform (или show -p для краткости).

Различия между различными пакетами платформы Composer подробно описаны в этом документе.

Пакет плагинов composer-plugin-api

Вы можете изменить поведение Composer с помощью пакетов плагинов. Composer предоставляет набор версионированных API для плагинов. Поскольку внутренние изменения Composer могут не изменить API плагинов, версия API может не увеличиваться каждый раз при увеличении версии Composer. Например, в версии Composer 2.3.12, версия composer-plugin-api может по-прежнему быть 2.2.0.

Пакет выполнения composer-runtime-api

При запуске приложений, установленных с помощью Composer (либо из командной строки, либо через веб-запрос), они требуют файла vendor/autoload.php, обычно как одну из первых строк исполняемого кода. Вызовы автозагрузчика Composer считаются "выполнением" приложения.

Начиная с версии 2.0, Composer предоставляет дополнительные возможности (помимо регистрации автозагрузчика классов) для среды выполнения приложения.

Аналогично composer-plugin-api, не каждый выпуск Composer добавляет новые возможности выполнения, поэтому версия composer-runtimeapi также увеличивается независимо от версии Composer.

Пакет Composer composer

Начиная с Composer 2.2.0, доступен новый пакет платформы под названием composer, который представляет точную версию Composer, которая выполняется. Пакеты, зависящие от этого пакета платформы, могут, следовательно, зависеть от (или конфликтовать с) отдельными версиями Composer, чтобы охватить крайние случаи, когда ни версия composer-runtime-api , ни версия composer-plugin-api не были изменены.

Поскольку эта опция была представлена с Composer 2.2.0, рекомендуется добавить зависимость composer-plugin-api от версии не ниже >=2.2.0, чтобы предоставить более информативное сообщение об ошибке для пользователей, использующих более старые версии Composer.

В целом, зависимость от composer-plugin-api или composer-runtime-api всегда рекомендуется по сравнению с зависимостью от конкретных версий Composer с пакетом платформы composer.

© Nils Adermann, Jordi Boggiano
Licensed under the MIT License.
https://getcomposer.org/doc/articles/composer-platform-dependencies.md

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API