Composer – zarządzanie zależnościami w aplikacji PHP

Uwaga! Ten wpis został napisany ponad rok temu i informacje w nim zawarte mogą być nieaktualne.

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:

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:

Następnie uruchamiamy zainstalowany skrypt z poleceniem instalowania

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.

Komentarze

  1. jwest ·

    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 😉

  2. Piotr Rybałtowski ·

    @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 🙂

Dodaj komentarz