Начиная очередной проект я часто сталкиваюсь с тем, что нужно скачивать последние версии фреймворков, строить скелет приложения и в сотый раз писать или переносить автолоадер. В некоторой степени я завидовал рубистам, которые могли поставить свои любимые рельсы буквально за минуту. Для 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": "name@example.com
"
}
],
"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);