Composer - менеджер зависимостей для php
Начиная очередной проект я часто сталкиваюсь с тем, что нужно скачивать последние версии фреймворков, строить скелет приложения
и в сотый раз писать или переносить автолоадер. В некоторой степени я завидовал рубистам, которые могли поставить свои
любимые рельсы буквально за минуту. Для php же приходилось довольствоваться файлом .gitmodules
, который кочевал от
одного проекта к другому.
Но случилось чудо и на свет появился composer. Устанавливается он до безобразия просто:
curl -sS https://getcomposer.org/installer | php
Если же вы пользователь PHPStorm, то можете сделать tools -> init composer
Как это работает
Для того что бы composer заработал, нужно создать в корне проекта файл composer.json. Например такой
{
"name": "vendor/package",
"description": "My awesome project",
"minimum-stability": "dev",
"authors": [
{
"name": "John Smith",
"email": "[email protected]"
}
],
"autoload": {
"psr-0": {
"Blog": "src/"
}
},
"require": {
"zendframework/zendframework": "2.1.*"
}
}
Все поля необязательные. name
используется при публикации вашего проекта, например на packagist. С description
,
и authors
я думаю все понятно.
Самым полезным безусловно является require
. Здесь перечисляются все зависимости проекта, в данном случае мы указали,
что проект требует Zend Framework из ветки 2.1. Подробнее о том, как задавать версии можно почитать тут
Вы можете указать сколько угодно зависимостей. Найти интересующие вас пакеты можно на packagist или через composer
composer.phar search hello-world
Если у проекта будут свои зависимости, они тоже будут удовлетворены при установке
Вторым по вкусности параметром композера является autoload
. Дело в том, что композер не только скачивает нужные пакеты, но
и подключает их автолоадеры, а также генерирует свой на основе параметра autoload
. Как можно догадаться, для нашего
примера мы используем автолоадер совместимый с PSR-0, который будет классы неймспейса Blog
искать в директории src
Установка
Конфиги писать скучно, так что пора приступить к установке.
composer.phar install
После некоторого времени, у вас в корне проекта появится директория vendor
, в которой будут лежать все зависимости и
сгенерированные композером автолоадеры. Также в корне появится файл composer.lock
, в котором содержится информация о
всех зависимостях. Дело в том, что композер служит не только при старте проекта, его можно использовать и для обновления
уже существующего.
composer.phar update
После этого, можно подключать автолоадер и использовать все возможности
<?php
include "vendor/autoload.php";
var_dump(\Zend\Version\Version::VERSION);