20.02 2013

Начиная очередной проект я часто сталкиваюсь с тем, что нужно скачивать последние версии фреймворков, строить скелет приложения и в сотый раз писать или переносить автолоадер. В некоторой степени я завидовал рубистам, которые могли поставить свои любимые рельсы буквально за минуту. Для 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);
comments powered by Disqus