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

194 lines
9.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
contributors:
- ["Brett Taylor", "https://github.com/glutnix"]
translators:
- ["Aleksey Lysenko", "https://github.com/nasgul"]
filename: LearnComposer-ru.sh
---
[Composer](https://getcomposer.org/) — это инструмент управления зависимостями в PHP.
Он позволяет вам декларировать библиотеки, от которых зависит ваш проект,
и он будет управлять ими, то есть устанавливать/обновлять их для вас.
# Установка
```sh
# Устанавливаем 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](https://getcomposer.org/doc/00-intro.md#installation-windows)
## Подтверждение установки
```sh
# Проверить версию и перечислить параметры
composer
# Получить дополнительную помощь для параметров
composer help require
# Проверить, способен ли Composer делать то, что ему нужно, и обновлён ли он
composer diagnose
composer diag # краткий вариант
# Обновление Composer до последней версии
composer self-update
composer self # краткий вариант
```
# Использование
Composer сохраняет ваши зависимости проекта в `composer.json`.
Вы можете отредактировать этот файл, но лучше всего позволить Composer управлять им за вас.
```sh
# Создать новый проект в текущей папке
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](https://packagist.org/) является основным хранилищем для пакетов Composer.
Существующие сторонние пакеты ищите там.
## `composer.json` и `composer.lock`
Файл `composer.json` хранит параметры допустимых версий каждой зависимости
вашего проекта, а также другую информацию.
Файл `composer.lock` хранит точную загруженную версию каждой зависимости.
Никогда не редактируйте этот файл.
Если вы включите файл `composer.lock` в свой Git-репозиторий,
каждый разработчик установит версии зависимостей, которые вы используете.
Даже когда будет выпущена новая версия зависимости, Composer продолжит загрузку версии,
записанной в lock-файле.
```sh
# Если вы хотите обновить все зависимости до новейших версий,
# которые по-прежнему соответствуют вашим предпочтениям для версий
composer update
# Если вам нужна новая версия определённой зависимости:
composer update phpunit/phpunit
# Если вы хотите перенести пакет на более новую версию
#с изменением предпочитаемой версии,
# вам может потребоваться сначала удалить старый пакет и его зависимости.
composer remove --dev phpunit/phpunit
composer require --dev phpunit/phpunit:^5.0
```
## Автозагрузчик
Composer создаёт класс автозагрузки, который вы можете вызвать
из своего приложения. Вы можете создавать экземпляры классов через пространство имён.
```php
require __DIR__ . '/vendor/autoload.php';
$mailgun = new Mailgun\Mailgun("key");
```
### PSR-4-совместимый автозагрузчик
Вы можете добавить в автозагрузчик свои собственные пространства имён.
Добавьте поле `autoload` в `composer.json`:
```json
{
"autoload": {
"psr-4": {"Acme\\": "src/"}
}
}
```
Это скажет автозагрузчику искать что-либо в пространстве имён `\Acme` в папке `src`.
Вы также можете использовать
[PSR-0, карту классов или просто список файлов для включения](https://getcomposer.org/doc/04-schema.md#autoload).
Также существует поле `autoload-dev` для пространств имён, предназначенных только для разработки.
При добавлении или изменении ключа автозагрузки вам необходимо перестроить автозагрузчик:
```sh
composer dump-autoload
composer dump # краткий вариант
# Оптимизирует пакеты PSR0 и PSR4 для загрузки классов с помощью карты классов.
# Медленно запускается, но улучшает производительность готового продукта.
composer dump-autoload --optimize --no-dev
```
# Кэш Composer
```sh
# Composer хранит загруженные пакеты для использования в будущем. Очистите кэш с помощью:
composer clear-cache
```
# Устранение неполадок
```sh
composer diagnose
composer self-update
composer clear-cache
```
## Темы, которые ещё (пока) не включены в этот учебник
* Создание и распространение ваших собственных пакетов на Packagist.org или в другом репозитории
* Предварительные и пост-скриптовые перехватчики: запуск задач,
когда происходят определенные события Composer
### Ссылки
* [Composer - Dependency Manager for PHP](https://getcomposer.org/)
* [Packagist.org](https://packagist.org/)