Composer – zarządzanie zależnościami w aplikacji PHP
PHP doczekał się kolejnego elementu, który powoduje, że korzystanie z niego i budowanie profesjonalnych aplikacji jest przyjemniejsze. Mam na myśli Composer – system zarządzania zależnościami w aplikacji PHP. Ułatwia on instalowanie i zarządzanie wersjami bibliotek wykorzystywanych przy budowaniu oprogramowania. W językach takich jak Node.js czy Ruby podobne programy są już od jakiegoś czasu (odpowiednio npm i bundler). I wg autorów strony Composer jest wzorowany właśnie na tych dwóch managerach pakietów.
Do czego taki manager służy? Założmy, że tworzymy aplikację, która oparta jest o Zend Framework 2 i Doctrine 2, czyli do jej budowy potrzebujemy trzech modułów – samego frameworka ZF2 oraz dwóch dla Doctrine. Tradycyjnie każdy z nich trzeba pobrać ręcznie (ewentualnie dopisać do zależności repozytorium git lub svn jeśli korzystamy z kompatybilnego z nimi). Dzięki Composerowi wystarczy utworzyć plik konfiguracyjny o nazwie composer.json (w formacie JSON jak nazwa wskazuje) i umieścić go w katalogu głównym. Minimalny plik w naszym przykładzie wyglądałby następująco:
{ "require": { "php": ">=5.3.3", "zendframework/zendframework": "dev-master", "doctrine/DoctrineModule": "dev-master", "doctrine/DoctrineORMModule": "dev-master" } }
Dodatkowo w powyższym przykładzie wprowadzona jest minimalna wymagana wersja PHP. Dla pozostałych modułów będzie pobierana najnowsza dostępna. Podane moduły są dostępne w repozytorium git (na github.com) dzięki czemu composer będzie pobierał najnowszą wersję biblioteki, gdy tylko nowa się pojawi. Oprócz git Composer obsługuje również repozytoria SVN i Mercurial.
Po skonfigurowaniu zależności pozostają dwa proste kroki do wykonania. Oba wykonujemy będąc w katalogu głównym naszej aplikacji. Najpierw pobieramy skrypt composer przez:
curl -s http://getcomposer.org/installer | php
Następnie uruchamiamy zainstalowany skrypt z poleceniem instalowania
php composer.phar install
I to wszystko! Wymagane biblioteki są zainstalowane w katalogu vendor a dodatkowo utworzona zosała mapa przestrzeni nazw, klasa automatycznego wczytywania klas oraz plik definiujący. Najnowsza wersja Zend Framework 2 potrafi korzystać z nich wszystkich.
Composer korzysta z repozytorium pakietów umieszczonego na stronie packagist.org. Można tam wyszukiwać dostępne pakiety lub dodawać własne. Przy dodawaniu należy pamiętać o spełnieniu wymagań względem nazewnictwa plików i klas z pakietu oraz nazwy samego pakietu.
Po kilku innych nowościach z PHP 5.4 moim zdaniem jest to kolejny bardzo dobry krok do profesjonalizacji tego języka i dzięki temu chętniej do niego wracam.
Faktycznie dobra sprawa, ostatnio się tym zainteresowałem bawiąc się slim framework, a tak poza tym miałem praktycznie gotowy wpis w szkicach na ten temat 😉
@jwest No niestety, byłem pierwszy. Ale opublikuj swój, będzie ciekawiej na techblogu 🙂 Możesz też coś napisać o slimie, bo wygląda ciekawie. Na callbackach i przypomina mi nieco node.js i express w których pracuję. Chętnie poczytam 🙂