Поиск…


Вступление

Композитор является наиболее часто используемым менеджером зависимостей PHP. Это аналогично npm в узле, pip для Python или NuGet для .NET.

Синтаксис

  • php path / to / composer.phar [команда] [опции] [аргументы]

параметры

параметр подробности
лицензия Определяет тип лицензии, которую вы хотите использовать в проекте.
авторы Определяет авторов проекта, а также данные автора.
служба поддержки Определяет электронные письма поддержки, канал irc и различные ссылки.
требовать Определяет фактические зависимости, а также версии пакета.
требуют-DEV Определяет пакеты, необходимые для разработки проекта.
предложить Определяет предложения пакета, то есть пакеты, которые могут помочь, если они установлены.
автозагрузка Определяет политики автозагрузки проекта.
автозагрузка-DEV Определяет политики автозагрузки для разработки проекта.

замечания

Автозагрузка будет работать только для библиотек, которые определяют информацию автозагрузки. Большинство библиотек выполняют и будут придерживаться стандарта, такого как PSR-0 или PSR-4 .

Полезные ссылки

Несколько предложений

  1. Отключить xdebug при запуске Composer.
  2. Не запускайте Composer как root . Пакетам не следует доверять.

Что такое композитор?

Composer - это менеджер зависимостей / пакетов для PHP. Его можно использовать для установки, отслеживания и обновления зависимостей проекта. Composer также заботится об автозагрузке зависимостей, на которые опирается ваше приложение, позволяя вам легко использовать зависимость внутри вашего проекта, не беспокоясь о том, чтобы включать их в начало любого файла.

Зависимости для вашего проекта перечислены в файле composer.json который обычно находится в корне вашего проекта. Этот файл содержит информацию о необходимых версиях пакетов для производства и разработки.

Полный контур схемы composer.json можно найти на веб-сайте Composer .

Этот файл можно редактировать вручную с помощью любого текстового редактора или автоматически через командную строку с помощью таких команд, как composer require <package> или composer require-dev <package> .

Чтобы начать использовать композитор в вашем проекте, вам необходимо создать файл composer.json . Вы можете создать его вручную или просто запустить composer init . После того, как вы запустите composer init в своем терминале, он попросит вас получить некоторую базовую информацию о вашем проекте: Имя пакета ( поставщик / пакет - например, laravel/laravel ), Описание - необязательный , Автор и другая информация, такая как Минимальная стабильность, Лицензия и Обязательный Пакеты.

Ключ require в вашем файле composer.json указывает Composer, от которого зависит ваш проект. require принимает объект, который сопоставляет имена пакетов (например, monolog / monolog ) с ограничениями версии (например, 1.0. *).

{
    "require": {
        "composer/composer": "1.2.*"
    }
}

Чтобы установить определенные зависимости, вам нужно будет запустить команду composer install компоновщика, и затем она найдет определенные пакеты, которые соответствуют предоставленному ограничению version и загрузите их в каталог vendor . Это соглашение о включении стороннего кода в каталог с именем vendor .

Вы заметите, что команда install также создала файл composer.lock .

Composer автоматически генерирует файл composer.lock . Этот файл используется для отслеживания установленных версий и состояния ваших зависимостей. Запуск composer install будет устанавливать пакеты точно в состояние, хранящееся в файле блокировки.

Автозагрузка с композитором

В то время как композитор предоставляет систему для управления зависимостями для проектов PHP (например, из Packagist ), он также может служить в качестве автозагрузчика, указывая, где искать конкретные пространства имен или включать общие файлы функций.

Он начинается с файла composer.json :

{
    // ...
    "autoload": {
        "psr-4": {
            "MyVendorName\\MyProject": "src/"
        },
        "files": [
            "src/functions.php"
        ]
    },
    "autoload-dev": {
        "psr-4": {
            "MyVendorName\\MyProject\\Tests": "tests/"
        }
    }
}

Этот код конфигурации гарантирует, что все классы в пространстве имен MyVendorName\MyProject отображаются в каталог src и все классы в MyVendorName\MyProject\Tests в каталог tests (относительно вашего корневого каталога). Он также автоматически включит файл functions.php .

После того, как вы поместили это в свой файл composer.json , запустите composer update компоновщика в терминале, чтобы обновить компоновку зависимостей, файл блокировки и сгенерировать файл autoload.php . При развертывании в производственной среде вы должны использовать composer install --no-dev . Файл autoload.php можно найти в каталоге vendor который должен быть сгенерирован в каталоге, где находится composer.json .

Вы должны require этот файл на ранней стадии настройки в жизненном цикле вашего приложения, используя строку, аналогичную приведенной ниже.

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

После того, как включено, то autoload.php файл заботится о загрузке всех зависимостей , которые были использованы в вашем composer.json файл.

Некоторые примеры пути к каталогу:

  • MyVendorName\MyProject\Shapes\Squaresrc/Shapes/Square.php .
  • MyVendorName\MyProject\Tests\Shapes\Squaretests/Shapes/Square.php .

Преимущества использования композитора

Композитор отслеживает, какие версии пакетов, которые вы установили в файле с именем composer.lock , который предназначен для управления версиями, так что, когда проект будет клонирован в будущем, просто запуск composer install будет загружать и устанавливать все зависимости проекта ,

Composer имеет дело с зависимостями PHP от каждого проекта. Это упрощает создание нескольких проектов на одной машине, которые зависят от отдельных версий одного пакета PHP.

Композиционные дорожки, зависимости которых предназначены только для сред, связанных с Dev

composer require --dev phpunit/phpunit

Composer предоставляет автозагрузчик, что делает его чрезвычайно простым для начала работы с любым пакетом. Например, после установки Goutte с composer require fabpot/goutte , вы можете сразу начать использовать Goutte в новом проекте:

<?php

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

$client = new Goutte\Client();

// Start using Goutte

Composer позволяет вам легко обновлять проект до последней версии, доступной вашему composer.json. НАПРИМЕР. composer update fabpot/goutte или обновить каждую из зависимостей вашего проекта: composer update .

Разница между «установкой композитора» и «обновлением композитора»

composer update

composer update будет обновлять наши зависимости, поскольку они указаны в composer.json .

Например, если наш проект использует эту конфигурацию:

"require": {
    "laravelcollective/html": "2.0.*"
}

Предположим, что мы действительно установили версию 2.0.1 пакета, запуск composer update приведет к обновлению этого пакета (например, до версии 2.0.2 , если он уже выпущен).

Подробное composer update будет:

  • Прочтите composer.json
  • Удалите установленные пакеты, которые больше не требуются в composer.json
  • Проверьте наличие последних версий наших необходимых пакетов.
  • Установите последние версии наших пакетов
  • Обновите файл composer.lock чтобы сохранить версию установленных пакетов.

composer install

composer install установит все зависимости, указанные в файле composer.lock в указанной версии (заблокированной) без обновления.

В деталях:

  • Прочтите файл composer.lock
  • Установите пакеты, указанные в файле composer.lock

Когда устанавливать и когда обновлять

  • composer update в основном используется на этапе разработки, чтобы обновить наши пакеты проектов.

  • composer install в первую очередь используется на этапе «развертывания» для установки нашего приложения на производственном сервере или в тестовой среде с использованием тех же зависимостей, хранящихся в файле composer.lock созданных при composer update .

Доступные команды композитора

команда использование
около Краткая информация о композиторе
архив Создайте архив этого композиционного пакета
просматривать Открывает URL-адрес репозитория пакета или домашнюю страницу вашего браузера.
очистить кэш Очищает внутренний кеш пакетов композитора.
очистить кэш Очищает внутренний кеш пакетов композитора.
конфиг Настройка параметров конфигурации
создать-проект Создайте новый проект из пакета в заданный каталог.
зависит Показывает, какие пакеты приводят к установке данного пакета
диагностики Диагностирует систему для выявления распространенных ошибок.
дамп-автозагрузка Сбрасывает автозагрузчик
dumpautoload Сбрасывает автозагрузчик
Exec Выполнить двоичный файл / скрипт
Глобальный Позволяет запускать команды в глобальном каталоге композитора ($ COMPOSER_HOME).
Помогите Отображает справку для команды
Главная Открывает URL-адрес репозитория пакета или домашнюю страницу вашего браузера.
Информация Показать информацию о пакетах
в этом Создает базовый файл composer.json в текущем каталоге.
устанавливать Устанавливает зависимости проекта из файла composer.lock, если он присутствует, или возвращается к composer.json.
лицензии Показывать информацию о лицензиях зависимостей
список Списки команд
устаревший Показывает список установленных пакетов с имеющимися обновлениями, включая их последнюю версию.
запрещает Показывает, какие пакеты предотвращают установку данного пакета
Удалить Удаляет пакет из приложения require или require-dev
требовать Добавляет необходимые пакеты в ваш composer.json и устанавливает их
выполнения сценария Запустите скрипты, определенные в composer.json.
поиск Поиск пакетов
самообновляться Обновляет композитор.phar до последней версии.
Selfupdate Обновляет композитор.phar до последней версии.
шоу Показать информацию о пакетах
статус Показать список локально модифицированных пакетов
предполагает Показать предложения пакетов
Обновить Обновляет ваши зависимости до последней версии в соответствии с композитором.json и обновляет файл composer.lock.
утверждать Проверяет композитор.json и composer.lock
Зачем Показывает, какие пакеты приводят к установке данного пакета
почему бы и нет Показывает, какие пакеты предотвращают установку данного пакета

Монтаж

Вы можете установить Composer локально, как часть вашего проекта, или глобально как исполняемый файл системы.

в местном масштабе

Чтобы установить, запустите эти команды в своем терминале.

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# to check the validity of the downloaded installer, check here against the SHA-384:
# https://composer.github.io/pubkeys.html
php composer-setup.php
php -r "unlink('composer-setup.php');"

Это загрузит composer.phar (файл архива PHP) в текущий каталог. Теперь вы можете запустить php composer.phar для использования Composer, например

php composer.phar install

глобально

Чтобы использовать Composer глобально, поместите файл composer.phar в каталог, который является частью вашего PATH

mv composer.phar /usr/local/bin/composer

Теперь вы можете использовать composer где-нибудь вместо php composer.phar , например

composer install


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow