Tuesday, July 24, 2012

Composer - это Maven для PHP?

Вот обнаружил, что на ПХП не так уж все и печально с менеджментом зависимостей. В PHP мире, оказывается существует замечательная штука - Composer.
Вот, например, список пакетов, доступных для скачивания композером  http://packagist.org/packages/. И это только репозиторий композера по умолчанию! Кстати, то что джависты называют репозиторием мавена, в композере называется Packagist.
Composer также позволяет скачивать зависимости из VCS (естественно, что git/github чаще всех встречается в качестве репозиториев PHPшных модулей).

Короче, просмотрев "по диагонали" доку (http://getcomposer.org/doc/) у меня начало развиваться чувство неполноценности мавена, как основного средства менеджмента зависимостей на моих Java проектах :). Вариантов хранения зависимостей - тьма! Можно хранить в VCS, можно в зип архиве на http server'e, также поддерживаются репозитории глобального менеджера зависимостей (PEAR). А хочешь - ставь свой репозиторий и работай с ним. Код packagist'a доступен для всеобщего доступа https://github.com/composer/packagist .

"Хочу купить!" - так сказала бы моя жена, увидев красивую вещь, которая ей очень нужна. И я повторю ее фразу в отношении composer'a.

Итак, приступил к покупке Composer'a :)
Доку как обычно читать буду потом, сразу ставлю:

1. В гитовом баш окне перехожу в Z:\usr\local\php5 (эта папка должна быть доступна по путям)


2. Запускаю такую следующую команду. Как поставить curl можно нагуглить если что.
curl -s http://getcomposer.org/installer | php

3. Для того, чтобы композер запускался из командной строки windows создаю батник composer.bat в z:\usr\local\bin с таким содержимым
php z:\usr\local\php5\composer.phar %*


4. composer.phar уже есть исполняемый файл для баша. Если в баш окне попробовать выполнить composer.phar help, то должно выдаться окно с хелпом


5. Такое же самое окошко с хелпом должно вывестись, если запускать из командной строки windows команду  composer help

Ну поставил, и че теперь?
Теперь я хочу добавить фреймворк Symfony2 в свой проект. Сам этот фреймворк лежит на  http://packagist.org/. Его зависимости разбросаны по всей сети.

1. Создаю новый проект в папке w:\home. Использую свою любимую ИДЕ для этого.

2. В корне проекта создаю файлик composer.json с вот таким содержимым:

То есть я указал, что хочу версию php не ниже 5.3.0 и версию symfony 2.0.16.

3. Инсталлирую зависимости в свой проект. В гитовом окне запускаю
composer.phar install
В моем проекте появилась папка vendor. В нее композер аккуратненько сложил все необходимые зависимости и что самое интересное - сгенерировал скрипт autoload.php.

4. Как использовать зависимости?
В папочке с пхп скриптами (у меня это w:\home\calculator\www) создаю файлик index.php с таким содержимым:
Request - это абстракция реквеста в Symfony. Что-то подобное классу HttpServletReqest из мира джавы.

5. Открываю браузер на страничке http://www.calculator/index.php
Работает. Могу дальше колбасить код :)

Composer позволяет не только устанавливать зависимые модули, но и создавать свои проекты и выкладывать их куда душа захочет (об этом подробнее позже). С помощью него можно так же добавить зависимость на любой проект, который изначально не использовал Composer.
Вот еще классная статья на хабре http://habrahabr.ru/post/145946/

2 comments:

  1. Серега, да ты просто фанат винды ;-)

    ReplyDelete
    Replies
    1. Да, винда привычней. Да и мак дорого стоит :)

      Delete