learnxinyminutes-docs/ru-ru/php-composer-ru.html.markdown
2018-11-20 00:40:56 +05:30

196 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.

---
category: tool
tool: composer
contributors:
- ["Alesey Lysenko", "https://github.com/nasgul"]
filename: LearnComposer.sh
lang: ru-ru
---
[Composer](https://getcomposer.org/) это инструмент управления зависимостями в PHP.
Он позволяет вам декларировать библиотеки, от которых зависит ваш проект,
и он будет управлять (устанавливать / обновлять) их для вас.
# Установка
```sh
# Устанавливаем composer.phar в текущую папку
curl -sS https://getcomposer.org/installer | php
# Если вы используете этот подход, вам нужно будет вызвать композер следующим образом:
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 # shorthand
# Обновление Composer к последней версии
composer self-update
composer self # shorthand
```
# Использование
Композитор сохраняет ваши зависимости проекта в `composer.json`.
Вы можете отредактировать этот файл, но лучше всего позволить Composer управлять им для вас.
```sh
# Создать новый проект в текущей папке
composer init
# запускается интерактивная анкета с просьбой предоставить подробную информацию о вашем проекте.
# Оставляя их пустым, все прекрасно, если вы не делаете другие проекты зависимыми от этого.
# Если файл composer.json уже существует, загрузите зависимости
composer install
# Чтобы загрузить только производственные зависимости, т. Е. Исключая зависимости разработки
composer install --no-dev
# Добавить зависимость от этого проекта
composer require guzzlehttp/guzzle
# выяснит, какая последняя версия guzzlehttp / guzzle есть,
# загрузите ее и добавьте новую зависимость в поле require.console.
composer require guzzlehttp/guzzle:6.0.*
# будет загружать последнюю версию, соответствующую шаблону (например, 6.0.2),
# и добавить зависимость к полю require.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 см.
# [Документация композитора по версиям] (https://getcomposer.org/doc/articles/versions.md)
# для получения более подробной информации
# Чтобы узнать, какие пакеты доступны для установки и в настоящее время установлены
composer show
# Чтобы узнать, какие пакеты в настоящее время установлены
composer show --installed
# Чтобы найти пакет с «mailgun» в его названии или описании
composer search mailgun
```
[Packagist.org](https://packagist.org/) является основным хранилищем для пакетов Composer.
Поиск там для существующих сторонних пакетов.
## `composer.json` vs `composer.lock`
Файл `composer.json` хранит ваши параметры плавающей версии вашего проекта для каждой зависимости,
а также другую информацию.
Файл `composer.lock` хранит точно, какую версию он загрузил для каждой зависимости.
Никогда не редактируйте этот файл.
Если вы включите файл `composer.lock` в свой репозиторий git,
каждый разработчик установит текущую версию зависимостей.
Даже когда выпущена новая версия зависимости, Composer продолжит загрузку версии,
записанной в файле блокировки.
```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 Autoloader
### Автозагрузчик PSR-4
Вы можете добавить свои собственные пространства имен в автозагрузчик.
Вы можете добавить свои собственные пространства имен в автозагрузчик.
В `composer.json` добавьте поле 'autoload':
```json
{
"autoload": {
"psr-4": {"Acme\\": "src/"}
}
}
```
Это скажет автозагрузчику искать что-либо в пространстве имен `\ Acme \` в папке `src`.
Вы также можете использовать
[PSR-0, Classmap или просто список файлов для включения] (https://getcomposer.org/doc/04-schema.md#autoload).
Также существует поле `autoload-dev` для пространств имен, предназначенных только для разработки.
При добавлении или изменении ключа автозагрузки вам необходимо перестроить автозагрузчик:
```sh
composer dump-autoload
composer dump # shorthand
# Оптимизирует пакеты 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 - Dependency Manager for PHP](https://getcomposer.org/)
* [Packagist.org](https://packagist.org/)