Osobní stránky

Composer – správa knihoven v PHP

V jazyce PHP dlouhou dobu neexistoval kvalitní nástroj pro začlenění externích knihoven do vašeho kódu. Je tu PEAR, který slouží k distribuci knihoven pro PHP, můžeme zde najít například PHPUnit a další. Instalace PEARU a knihoven je ale poměrně složitá a kód musí projít schválením, než se dostane do katalogu.

V poslední době se díky službám jako GitHub a Google Code čím dál tím více socializuje, mnoho programátorů se naučilo využívat externí knihovny a nástroje. Vyplatí se použít knihovnu, na které může spolupracovat více lidí a kde může kdokoliv posílat připomínky a vylepšení kódu. Místo toho, abychom psali vše znovu, stačí přidat knihovnu k našemu kódu. Nemusíme znovu vynalázat kolo.

Načítání souborů

Díky tomuto fenoménu vznikla knihovna pro správu knihoven v PHP zvaná Composer. Do hlavní složky našeho projektu stačí vložit jednoduchý JSON soubor composer.json, kde zadáme jméno balíku, jméno knihovny a verzi. Například:

{
    "require": {
        "monolog/monolog": "1.0.0"
    }
}

Pro instalaci knihoven musíme stáhnout soubor composer.phar. Pak už jen zadáme do příkazové řádky:

php composer.phar install

Vytvoří se složka vendor, ve které jsou uloženy všechny nainstalované knihovny. Pokud všechny balíky dodržují standard pro načítání knihoven v PHP PSR-0, můžeme do našeho kódu načítat knihovny vložením následujícího kódu.

require 'vendor/.composer/autoload.php';

V konfiguračním souboru composer.json můžeme použít různé zástupné znaky pro načítané knihovy. Podporované znaky jsou například: * a >=.

{
    "require": {
        "vendor/package": "1.3.2",
        "vendor/package2": "1.*",
        "vendor/package3": ">=1.3.0"
    }
}

Pro composer existuje velké množství kvalitních knihoven. Pro aktualizaci balíků, nebo pokud do souboru composer.json přidáme nějáký další balík stačí do terminálu zadat:

php composer.phar update

Packagist – vlastní knihovny pro composer

Abychom vytvořili vlastní balík nainstalovatelný pomocí composeru, stačí do souboru composer.json, který musí být v hlavní složce našeho projektu přidat:

{
    "name": "your-vendor-name/package-name",
    "require": {
        "php": ">=5.3.0",
        "another-vendor/package": "1.*"
    }
}

Jméno knihovny si volíme sami, dále zadáváte všechny závislosti pro vaši knihovnu. Do souboru můžete zadat i další podrobnosti, jako licenci, autory a podobně, celkový výčet je v dokumentaci.

Zdrojové kódy knihovny včetně souboru composer.json nahrajeme na veřejně dostupný systém pro správu zdrojového kódu, například GitHub a podobné. Pro správu zdrojového kódu můžeme použít i SVN, Mercurial nebo jiný nástroj.

Pak už jen stačí nahrát naši knihovnu na packagist.org, aby byla zařazena do katalogu.

Composer je velmi užitečná knihovna a hodí se hlavně pokud využíváte cizí knihovny, anebo naopak programujete knihovny pro ostatní. Myslím si že composer ještě více posílí spolupráci programátorů a používání externích knihoven. Hlavní síla je v jednoduchosti a rychlosti, nemusíte se starat o ruční stahování a organizaci, stačí zadat jeden příkaz do terminálu a composer se postará za vše místo vás. Pokud vyvíjíte v PHP, tak composer podle mě rozhodně stojí za vyzkoušení.

Jakub Škvára


Jakub je cestovatel, blogger a webový vývojář. Zajímá se především o technické novinky a rád navštěvuje konference. Používá: Symfony2 Framework, AngularJS, NodeJS, MongoDB a další moderní technologie. Aktuálně žije v Londýně.