learnxinyminutes-docs/ru-ru/php-composer-ru.html.markdown

197 lines
9.2 KiB
Markdown
Raw Normal View History

2018-11-19 22:10:56 +03:00
---
category: tool
tool: composer
contributors:
- ["Alesey Lysenko", "https://github.com/nasgul"]
filename: LearnComposer.sh
lang: ru-ru
---
2018-11-19 22:16:00 +03:00
[Composer](https://getcomposer.org/) это инструмент управления зависимостями в PHP.
Он позволяет вам декларировать библиотеки, от которых зависит ваш проект,
2018-11-19 22:10:56 +03:00
и он будет управлять (устанавливать / обновлять) их для вас.
# Установка
```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
```
2018-11-19 22:16:00 +03:00
Пользователи Windows должны следовать
2018-11-19 22:10:56 +03:00
[Инструкциям по установке в Windows ](https://getcomposer.org/doc/00-intro.md#installation-windows)
## Подтверждение установки
```sh
# # Проверить версию и параметры списка
composer
# Получить дополнительную помощь для параметров
composer help require
# Проверьте, способен ли Composer делать то, что ему нужно, и если он обновлен
2018-11-19 22:17:42 +03:00
композитор диагностирует
2018-11-19 22:10:56 +03:00
composer diagnose
composer diag # shorthand
# Обновление Composer к последней версии
composer self-update
composer self # shorthand
```
# Использование
2018-11-19 22:16:00 +03:00
Композитор сохраняет ваши зависимости проекта в `composer.json`.
2018-11-19 22:10:56 +03:00
Вы можете отредактировать этот файл, но лучше всего позволить Composer управлять им для вас.
2018-11-19 22:17:42 +03:00
2018-11-19 22:10:56 +03:00
```sh
# Создать новый проект в текущей папке
composer init
2018-11-19 22:16:00 +03:00
# запускается интерактивная анкета с просьбой предоставить подробную информацию о вашем проекте.
2018-11-19 22:10:56 +03:00
# Оставляя их пустым, все прекрасно, если вы не делаете другие проекты зависимыми от этого.
# Если файл composer.json уже существует, загрузите зависимости
composer install
# Чтобы загрузить только производственные зависимости, т. Е. Исключая зависимости разработки
composer install --no-dev
# Добавить зависимость от этого проекта
composer require guzzlehttp/guzzle
2018-11-19 22:16:00 +03:00
# выяснит, какая последняя версия guzzlehttp / guzzle есть,
2018-11-19 22:10:56 +03:00
# загрузите ее и добавьте новую зависимость в поле require.console.
composer require guzzlehttp/guzzle:6.0.*
2018-11-19 22:16:00 +03:00
# будет загружать последнюю версию, соответствующую шаблону (например, 6.0.2),
2018-11-19 22:10:56 +03:00
# и добавить зависимость к полю require.json
composer require --dev phpunit/phpunit:~4.5.0
2018-11-19 22:16:00 +03:00
# потребуется как зависимость от разработки.
2018-11-19 22:10:56 +03:00
# Будет использовать последнюю версию> = 4.5.0 и <4.6.0
composer require-dev phpunit/phpunit:^4.5.0
# потребуется как зависимость от разработки. Будет использовать последнюю версию> = 4.5.0 и <5.0
2018-11-19 22:16:00 +03:00
# Для получения дополнительной информации о совместимости версий Composer см.
# [Документация композитора по версиям] (https://getcomposer.org/doc/articles/versions.md)
2018-11-19 22:10:56 +03:00
# для получения более подробной информации
# Чтобы узнать, какие пакеты доступны для установки и в настоящее время установлены
composer show
# Чтобы узнать, какие пакеты в настоящее время установлены
composer show --installed
# Чтобы найти пакет с «mailgun» в его названии или описании
composer search mailgun
```
2018-11-19 22:16:00 +03:00
[Packagist.org](https://packagist.org/) является основным хранилищем для пакетов Composer.
2018-11-19 22:10:56 +03:00
Поиск там для существующих сторонних пакетов.
2018-11-19 22:17:42 +03:00
2018-11-19 22:10:56 +03:00
## `composer.json` vs `composer.lock`
2018-11-19 22:16:00 +03:00
Файл `composer.json` хранит ваши параметры плавающей версии вашего проекта для каждой зависимости,
2018-11-19 22:10:56 +03:00
а также другую информацию.
2018-11-19 22:16:00 +03:00
Файл `composer.lock` хранит точно, какую версию он загрузил для каждой зависимости.
2018-11-19 22:10:56 +03:00
Никогда не редактируйте этот файл.
2018-11-19 22:16:00 +03:00
Если вы включите файл `composer.lock` в свой репозиторий git,
каждый разработчик установит текущую версию зависимостей.
Даже когда выпущена новая версия зависимости, Composer продолжит загрузку версии,
2018-11-19 22:10:56 +03:00
записанной в файле блокировки.
```sh
2018-11-19 22:16:00 +03:00
# Если вы хотите обновить все зависимости до их новейшей версии,
2018-11-19 22:10:56 +03:00
# которые по-прежнему соответствуют вашим предпочтениям в версии обновление композитора
composer update
# Если вам нужна новая версия определенной зависимости:
composer update phpunit/phpunit
2018-11-19 22:16:00 +03:00
# Если вы хотите перенести пакет на более новую версию,
2018-11-19 22:10:56 +03:00
# вам может потребоваться сначала удалить старый пакет и его зависимости.
composer remove --dev phpunit/phpunit
composer require --dev phpunit/phpunit:^5.0
```
## Автозагрузчик
2018-11-19 22:16:00 +03:00
Composer создает класс автозагрузки, который вы можете потребовать от своего приложения.
2018-11-19 22:10:56 +03:00
Вы можете создавать экземпляры классов через их пространство имен.
```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`.
2018-11-19 22:16:00 +03:00
Вы также можете использовать
2018-11-19 22:17:42 +03:00
[PSR-0, Classmap или просто список файлов для включения](https://getcomposer.org/doc/04-schema.md#autoload).
2018-11-19 22:10:56 +03:00
Также существует поле `autoload-dev` для пространств имен, предназначенных только для разработки.
При добавлении или изменении ключа автозагрузки вам необходимо перестроить автозагрузчик:
```sh
composer dump-autoload
composer dump # shorthand
2018-11-19 22:16:00 +03:00
# Оптимизирует пакеты PSR0 и PSR4 для загрузки классов.
2018-11-19 22:10:56 +03:00
# Медленно запускается, но улучшает производительность при производстве.
composer dump-autoload --optimize --no-dev
```
# Composer Кэш
```sh
# Composer сохранит загруженные пакеты для использования в будущем. Очистите его с помощью:
composer clear-cache
```
# Поиск проблемы
```sh
composer diagnose
composer self-update
composer clear-cache
```
## Темы, которые пока (пока) не включены в этот учебник
* Создание и распространение ваших собственных пакетов на Packagist.org или в другом месте
2018-11-19 22:16:00 +03:00
* Предварительные и пост-скриптовые перехватчики: запуск задач,
2018-11-19 22:10:56 +03:00
когда происходят определенные события композитора
### Рекомендации
* [Composer - Dependency Manager for PHP](https://getcomposer.org/)
* [Packagist.org](https://packagist.org/)