learnxinyminutes-docs/ru/php-composer.md
2024-12-08 23:21:12 -07:00

9.2 KiB
Raw Permalink Blame History

contributors translators filename
Brett Taylor
https://github.com/glutnix
Aleksey Lysenko
https://github.com/nasgul
LearnComposer-ru.sh

Composer — это инструмент управления зависимостями в PHP. Он позволяет вам декларировать библиотеки, от которых зависит ваш проект, и он будет управлять ими, то есть устанавливать/обновлять их для вас.

Установка

# Устанавливаем composer.phar в текущую папку
curl -sS https://getcomposer.org/installer | php
# Если вы используете этот подход, вам нужно будет вызвать Composer следующим образом:
php composer.phar about

# Устанавливаем бинарный файл в ~/bin/composer
# Примечание: убедитесь, что ~/bin находится в переменной PATH вашего окружения
curl -sS https://getcomposer.org/installer | php -- --install-dir=~/bin --filename=composer

Пользователи Windows должны следовать Инструкциям по установке в Windows

Подтверждение установки

# Проверить версию и перечислить параметры
composer

# Получить дополнительную помощь для параметров
composer help require

# Проверить, способен ли Composer делать то, что ему нужно, и обновлён ли он
composer diagnose
composer diag # краткий вариант

# Обновление Composer до последней версии
composer self-update
composer self # краткий вариант

Использование

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

#  Создать новый проект в текущей папке
composer init
# запускается интерактивная анкета с просьбой предоставить подробную информацию о вашем проекте.
# Вы прекрасно можете оставить ответы пустыми, если не делаете другие проекты
# зависимыми от создаваемого проекта.

# Если файл composer.json уже существует, загрузите зависимости
composer install

# Чтобы загрузить только зависимости для готового продукта, т.е.
# исключая зависимости для разработки
composer install --no-dev

# Добавить зависимость для готового продукта к этому проекту
composer require guzzlehttp/guzzle
# выяснит, какая существует последняя версия guzzlehttp / guzzle,
# загрузит её и добавит новую зависимость в поле require файла composer.json.

composer require guzzlehttp/guzzle:6.0.*
# Загрузит последнюю версию, соответствующую шаблону (например, 6.0.2),
# и добавит зависимость к полю require файла composer.json

composer require --dev phpunit/phpunit:~4.5.0
# Добавит как зависимость для разработки.
# Будет использовать последнюю версию> = 4.5.0 и <4.6.0

composer require-dev phpunit/phpunit:^4.5.0
# Добавит как зависимость для разработки.
# Будет использовать последнюю версию> = 4.5.0 и <5.0

# Для получения дополнительной информации о совместимости версий Composer см.
# [Документацию Composer по версиям] (https://getcomposer.org/doc/articles/versions.md)

# Чтобы узнать, какие пакеты доступны для установки и в настоящее время установлены
composer show

# Чтобы узнать, какие пакеты в настоящее время установлены
composer show --installed

# Чтобы найти пакет со строкой «mailgun» в названии или описании
composer search mailgun

Packagist.org является основным хранилищем для пакетов Composer. Существующие сторонние пакеты ищите там.

composer.json и composer.lock

Файл composer.json хранит параметры допустимых версий каждой зависимости вашего проекта, а также другую информацию.

Файл composer.lock хранит точную загруженную версию каждой зависимости. Никогда не редактируйте этот файл.

Если вы включите файл composer.lock в свой Git-репозиторий, каждый разработчик установит версии зависимостей, которые вы используете. Даже когда будет выпущена новая версия зависимости, Composer продолжит загрузку версии, записанной в lock-файле.

# Если вы хотите обновить все зависимости до новейших версий,
# которые по-прежнему соответствуют вашим предпочтениям для версий
composer update

# Если вам нужна новая версия определённой зависимости:
composer update phpunit/phpunit

# Если вы хотите перенести пакет на более новую версию
#с изменением предпочитаемой версии,
# вам может потребоваться сначала удалить старый пакет и его зависимости.
composer remove --dev phpunit/phpunit
composer require --dev phpunit/phpunit:^5.0

Автозагрузчик

Composer создаёт класс автозагрузки, который вы можете вызвать из своего приложения. Вы можете создавать экземпляры классов через пространство имён.

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

$mailgun = new Mailgun\Mailgun("key");

PSR-4-совместимый автозагрузчик

Вы можете добавить в автозагрузчик свои собственные пространства имён.

Добавьте поле autoload в composer.json:

{
  "autoload": {
    "psr-4": {"Acme\\": "src/"}
  }
}

Это скажет автозагрузчику искать что-либо в пространстве имён \Acme в папке src.

Вы также можете использовать PSR-0, карту классов или просто список файлов для включения. Также существует поле autoload-dev для пространств имён, предназначенных только для разработки.

При добавлении или изменении ключа автозагрузки вам необходимо перестроить автозагрузчик:

composer dump-autoload
composer dump # краткий вариант

# Оптимизирует пакеты PSR0 и PSR4 для загрузки классов с помощью карты классов.
# Медленно запускается, но улучшает производительность готового продукта.
composer dump-autoload --optimize --no-dev

Кэш Composer

# Composer хранит загруженные пакеты для использования в будущем. Очистите кэш с помощью:
composer clear-cache

Устранение неполадок

composer diagnose
composer self-update
composer clear-cache

Темы, которые ещё (пока) не включены в этот учебник

  • Создание и распространение ваших собственных пакетов на Packagist.org или в другом репозитории
  • Предварительные и пост-скриптовые перехватчики: запуск задач, когда происходят определенные события Composer

Ссылки