Co je to Composer

Composer je nástroj pro správu závislostí PHP projektů. Většina projektů má nějakou závislost - framework, šablonovací systém, knihovny. Pokud tedy chci ve svém projektu používat framework Nette už nemusím nic stahovat z oficiálních stránek a rozbalovat. Stačí ve složce s projektem zadat:

composer require nette/nette

Framework Nette jakožto nová závislost se nám stáhne do složky /vendor a zároveň se uloží do souboru composer.json, takže když si pak bude chtít někdo nainstalovat váš projekt na svůj lokální stroj, tak zadá akorát:

composer install

Všechny nástroje a knihovny, které v projektu používáte se mu automaticky stáhnout, přesně dle souboru composer.json. Výhoda je také v tom, že ulehčíme verzovacím nástrojům, které nebudou muset tyto knihovny verzovat, ale uloží pouze změny maličkého composer.json souboru.

Hlavní seznam repozitářů je Packagist.org, takže pokud vyvíjíte nějakou knihovnu, nebo framework který by měl jít nainstalovat přes Composer, musíte ho rovněž zaregistrovat zde. Rovněž tato knihovna musí mít vlastní soubor composer.json kde nadefinujeme základní údaje o knihovně a rovněž závislosti této knihovny. Packagist si váš projekt stáhne přímo z vašeho repozitáře a postará se o distribuci pro Composer. Podporovány jsou repozitáře typu Git, SVN nebo Mercurial.

Composer umí skvěle pracovat s verzemi, takže si můžeme přesně definovat, která verze bude v našem projektu použita, aby nedocházelo k vzájemných problémům v nekompatibilitě jednotlivých nástrojů.

Soubor composer.json s definicí knihoven a jejich verzí pak může vypadat například takto:

{
    "require": {
        "php" : ">=5.3.2",
        "nette/nette": "~2.2.0"
    }
}

Společně s composer.json se nám vytvoří také soubor composer.lock, který eviduje aktuálně nainstalované verze jednotlivých nástrojů. Příkaz install bere verze přímo z tohoto souboru, takže i pokud zadáme v composer.json, že se má brát vždy nejaktuálnější verze knihoven, nainstaluje se nám přesně ta, která je zapsaná v compser.lock. Tím máme zajištěno, že se nainstalují přesně odzkoušené verze a zachová se tak stabilita projektu.

Pro instalaci nejnovějších verze knihoven (když třeba vyjde zrovna nová verze), můžeme použít příkaz

composer update

Více informací o tom jak Composer interně pracuje je možné se dočíst v mém článku o instalaci Satis.

Instalace Composer

Pro instalaci na MacOS je nejlepší použít nástroj Homebrew (instalace Homebrew jsem zmínil ve druhém odstavci článku o instalaci PHP na MacOS). Zadáme akorát:

brew install composer

Pro instalaci na Windows je vhodné použít oficiální instalátor a postupovat podle instalačního návodu.

Ostatní informace

Oficiální stránka projektu: https://getcomposer.org/

GitHub repozitář: https://github.com/composer/composer

Packagist (centrální index repozitářů dostupných v Composer): https://packagist.org/