Что такое composer?
Composer - это менеджер зависимостей для PHP, написанный на нем же. Он позволяет автоматически устанавливать и обновлять необходимые для работы проекта пакеты, например из GitHub или Packagist. А так же имеет автолодер, что позволяет использовать эти пакеты не подключая их в коде каждый раз, т.е. не использовать лишние `require` и `include`. Достаточно только подключить в проекте файл `vendor\autoload.php` желательно где-нибудь ближе к началу.
Установка
На официальном сайте приведен пример такой установки:
Linux
Большинство дистрибутивов linux имеют composer в своих репозиториях.
Ubuntu: `sudo apt-get install composer`.
ArchLinux: `sudo pacman -S composer`.
CentOS: `sudo yum install composer`.
MacOS
На MacOS можно установить при помощи brew: `brew install composer`.
Windows
На Windows можно скачать официальный инсталлятор.
Так же можно скачать файл composer.phar и использовать его ничего не устанавливая
Основные команды
Создание composer.json для проекта:
composer init
Добавление пакета в composer.json:
composer require <пакет>
Обновление пакетов:
composer update
Установка пакетов:
composer install
Если используется composer.phar тогда в командах вместо composer будет `php composer.phar`
Параметры composer.json
- `name` - имя проекта/пакета, строковое значение вида «вендор/ия_пакета»
- `description` - описание проекта/пакета, строковое значение
- `keywords` - массив ключевых слов, вида «[«ключевое_слово_1», «ключевое_слово_2»]»
- `homepage` - адрес сайта или страницы проекта, строковое значение.
- `license` - лицензия, которая распространяется на пакет, строковое значение, например `BSD-3-Clause` или `MIT`.
- `require` - список зависимостей проекта, содержит записи вида «пакет»: «версия». Версии могут иметь различные параметры. Пример:
- `require-dev` - список зависимости для разработки проекта, обычно включает юнит тесты и другие пакеты позволяющие заниматься отладкой, но не нужные в боевой версии проекта. Записи соответствуют параметру `reqiure`.
- `autoload` - добавление кода в автолодер, содержит записи с указанием стандарта автозагрузки psr-0 или psr-4, например:
В данном примере в автолодер будут добавлены записи по стандарту PSR-4 с неймспейсом App.
Зачем нужен composer.lock
Composer.lock хранит в себе версии пакетов которые используются для разработки. Например, если в `composer.lock ` файле записана версия пакета 2.3.1, то команда `composer install` установить именно эту версию пакета. Это нужно чтобы проект, везде, работал на одинаковых версиях пакетов. Поэтому `composer.lock` файл необходимо включать в git.