Deprecated: Creation of dynamic property Automattic\Jetpack\WP_JS_Data_Sync\Data_Sync::$namespace is deprecated in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jetpack-boost/jetpack_vendor/automattic/jetpack-wp-js-data-sync/src/class-data-sync.php on line 91

Deprecated: Creation of dynamic property Automattic\Jetpack_Boost\Features\Speed_Score\Speed_Score::$modules is deprecated in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jetpack-boost/app/features/speed-score/Speed_Score.php on line 20

Deprecated: Creation of dynamic property Jetpack_Publicize::$modules is deprecated in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jetpack/modules/publicize.php on line 38

Deprecated: Creation of dynamic property Automattic\Jetpack\Publicize\Publicize_UI::$in_jetpack is deprecated in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jetpack/modules/publicize.php on line 101

Deprecated: Creation of dynamic property JQueryColorbox::$colorboxSettings is deprecated in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jquery-colorbox/jquery-colorbox.php on line 93

Deprecated: Creation of dynamic property JQueryColorbox::$colorboxThemes is deprecated in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jquery-colorbox/jquery-colorbox.php on line 97

Deprecated: Creation of dynamic property JQueryColorbox::$colorboxUnits is deprecated in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jquery-colorbox/jquery-colorbox.php on line 121

Deprecated: Creation of dynamic property JQueryColorbox::$colorboxTransitions is deprecated in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jquery-colorbox/jquery-colorbox.php on line 127
Composer - zarządzanie zależnościami w aplikacji PHP

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

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:

{
    "require": {
        "php": ">=5.3.3",
        "zendframework/zendframework": "dev-master",
        "doctrine/DoctrineModule": "dev-master",
        "doctrine/DoctrineORMModule": "dev-master"
    }
}

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:

curl -s http://getcomposer.org/installer | php

Następnie uruchamiamy zainstalowany skrypt z poleceniem instalowania

php composer.phar install

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.

2 komentarze do “Composer – zarządzanie zależnościami w aplikacji PHP

  • 16 czerwca 2012 o 13:47
    Bezpośredni odnośnik

    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 😉

  • 16 czerwca 2012 o 13:47
    Bezpośredni odnośnik

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

Skomentuj lub zadaj pytanie

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

%d bloggers like this: