Composer – manager pakietów dla PHP

Zawsze mając jakiś projekt używamy jakiś bibliotek, których chcemy użyć, aby ułatwić sobie pracę. Zaczynając od jakiś maleństw np. od helperów do obsługi obrazków, do kobył jakimi są frameworki MVC. Do tej pory albo ten problem ignorowałem i na sztywno wrzucałem kod do repo albo stosowałem moduły zależne w gicie.

Pierwsze rozwiązanie jest najprostsze  – nie wymaga specjalnej wiedzy, wrzucamy kod do katalogu, wrzucamy do repo i działa. Tylko co jeśli chcemy użyć biblioteki w kilku projektach? A co jak wyjdzie nowsza wersja? Odpowiedź: kopiujemy :) Tym sposobem trzymamy tę samą bibliotekę w każdym projekcie i musimy ją ręcznie aktualizować jak wyjdzie nowa wersja. Aby temu zapobiec wynaleziono wcześniej wspomniane moduły zależne (git submodules).

Działają one następująco: w tym katalogu naszego repozytorium jest inne repozytorium. Rozwiązanie w swojej prostocie genialne, wpisujemy polecenie do konsoli:

Tylko,  co jeśli chcemy nie dopuścić do zainstalowania wersji 3.0, bo psuja ona naszą funkcjonalność? Tutaj jest pies pogrzebany, git pozwoli zrobić wszystko :) A co jak wersjonujemy się w svnie?

Tu z pomocą przychodzi tytułowy composer. Jest to zewnętrzny manager pakietów,  niezależny od naszego repozytorium Dodatkowo pozwala korzystać z potężnego repozytorium pakietów oraz definiować własne.

Sama idea użycia sprowadza się do stworzenia w katalogu głównym naszego projektu pliku composer.json. Tam trzymamy “namiary” na zewnętrzne biblioteki. Przykładowy plik konfiguracyjny, który zassie nam  CakePHP z gałęzi 2.4 do katalogu Vendor wygląda następująco:

Instalacja wymaganych zależności odbywa się przez polecenie composer instal l wykonane w katalogu naszego projektu. Jedyne o czym musimy pamiętać, to dodanie katalogu Vendors do pliku gitignore. Aktualizacja jest równie banalna – wykonujemy composer update . Po więcej odsyłam na główna stronę projektu.