Dlaczego warto używać Composera?

Composer jest to narzędzie do zarządzania zależnościami w projekcie. Dzięki niemu możemy w prosty sposób dokładać biblioteki do projektu w określonej wersji i je łatwo aktualizować. Composer domyślnie instaluje biblioteki w katalogu vendor. Aby zacząć korzystać z composera należy go pobrać ze strony https://getcomposer.org/download/

Mając paczkę z composerem możemy go uruchomic poleceniem php composer.phar  

Jeżeli pracujesz na windowsie polecam odpalenie konsoli i wpisanie polecenia:

echo @php "%~dp0composer.phar" %*>composer.bat

Nastepnie dodaj pliki do zmiennej środowiskowej $PATH. Dzięki temu będziesz mógł wpisywać w dowolnym miejscu polecenie composer

Jeśli pracujesz na linuxie to pobierz composera i dodaj go do katalogu /bin dzięki temu będziesz mógł korzystać z niego w każdym miejscu z konsoli.

Jeśli korzystasz z OSX możesz zainstalować composera z packagemanagera np. homebrew.

Następnie jeśli chcesz stworzyć projekt za pomocą composera musisz utworzyć plik composer.json

W pliku tym deklarujemy co potrzebujemy w naszym projekcie, lista paczek, wersji itp. wszystko dostępne jest na stronie packagist.org można również podpinać własne moduły/paczki/bundle poprzez utworzenie własnego repozytorium z paczkami za pomocą satisa, ale o tym w innym artykule.

Aby Mając już plik composer.json musisz wykonać polecenie

composer install

Dzięki temu wszystkie biblioteki w projekcie zostaną pobrane w wersji, którą zadeklarowałeś i ściągnięte do katalogu vendor. Aby z nich korzystać musisz w index.php dodać linię

require 'vendor/autoload.php';

Przykład composer.json dla instalacji ZendFramework 2 oraz PhpUnit-a

{
    "require": {
        "zendframework/zendframework": "2.3.*@dev",
        "phpunit/phpunit": "4.5.*@dev"
    }
}

 

Warto również korzystać z loadera, który jest wbudowany w Composera. Korzysta on z PSR-4(aktualnie jedyny standard ładowania plików w PHP). Dodanie klas do ładowania odbywa się poprzez edycję pliku composer.json i dodanie następującego kodu

{
    "autoload": {
        "psr-4": {"Acme\\": "src/"}
    }
}

Gdzie Acme to nasza biblioteka, a src/ to ścieżka do niej.

Jeśli chcesz zaktualizować biblioteki używasz komendy composer update.

Ważne:

Pamiętaj, że nie należy modyfikować bibliotek w katalogu vendor. Jeśli chcesz coś zmienić to najlepiej zrobić forka projektu i tam edytować zmiany, ewentualnie później zrobić merge requesta do projektu. Jeśli zmienisz coś w katalogu vendor to przy komendzie composer update twoje zmiany zostaną nadpisane!