PHP
Менеджер зависимостей композитора
Поиск…
Вступление
Композитор является наиболее часто используемым менеджером зависимостей PHP. Это аналогично npm
в узле, pip
для Python или NuGet
для .NET.
Синтаксис
- php path / to / composer.phar [команда] [опции] [аргументы]
параметры
параметр | подробности |
---|---|
лицензия | Определяет тип лицензии, которую вы хотите использовать в проекте. |
авторы | Определяет авторов проекта, а также данные автора. |
служба поддержки | Определяет электронные письма поддержки, канал irc и различные ссылки. |
требовать | Определяет фактические зависимости, а также версии пакета. |
требуют-DEV | Определяет пакеты, необходимые для разработки проекта. |
предложить | Определяет предложения пакета, то есть пакеты, которые могут помочь, если они установлены. |
автозагрузка | Определяет политики автозагрузки проекта. |
автозагрузка-DEV | Определяет политики автозагрузки для разработки проекта. |
замечания
Автозагрузка будет работать только для библиотек, которые определяют информацию автозагрузки. Большинство библиотек выполняют и будут придерживаться стандарта, такого как PSR-0 или PSR-4 .
Полезные ссылки
- Packagist - просмотр доступных пакетов (которые вы можете установить с помощью Composer).
- Официальная документация
- Официальное руководство по началу работы
Несколько предложений
- Отключить xdebug при запуске Composer.
- Не запускайте 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\Square
➔src/Shapes/Square.php
. -
MyVendorName\MyProject\Tests\Shapes\Square
➔tests/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