P Dependency und P HP                aketManagement mit ComposerDominik Liebler I 22. März 2012                           ...
Dependency Management, warum eigentlich?I Abhängigkeiten    Framework (ZF Symfony2, ...)                 ,    OR  M    AP ...
Warum nicht PEAR verwenden?I globale Installation von PaketenI schwierige Kontrolle der Paketversionen im ProjektI QA Proz...
Composer!            Mayflower GmbH I 4
Warum Composer?I lokale Installation von PaketenI Config im Repository    gleiche Versionen bei jedem Developer    Depende...
2 TeileI Composer                      IPackagist     Dependency Manager             Default Paketrepository     http:/ / ...
HistoryI Start: ~April 2011I Einflüsse: npm (node.js) und bundler (Ruby)I Wurzeln in der Symfony2 Community    wird seit A...
Composer ArchitekturI einzelnes PHARPaketI simple JSON ConfigsI bedient externe Tools für VCSI kann git, svn, hg, zip, tar...
Installationcurl -s http://getcomposer.org/installer | php                                        Mayflower GmbH I 9
Paketkonfigurationen                       Mayflower GmbH I 10
Beispiel: Paket von Packagist (composer.json){"require": {"doctrine/couchdb": "*"}}                                       ...
Pakete installlierenphp composer.phar install                            Mayflower GmbH I 12
Beispiel: Paket von Github{    "repositories": [        {            "type": "vcs",            "url": "https://github.com/...
Pakete updatenphp composer.phar update                           Mayflower GmbH I 14
Beispiel: Paket von PEAR{    "repositories": [        {            "type": "pear",            "url": "http://pear2.php.net...
Beispiel: Paket von Subversion{    "repositories": [{          "type": "package",          "package": {              "name...
Beispiel: ZIP Datei{    "repositories": [{          "type": "package",          "package": {              "name": "smarty/...
Autoloading: PSR-0I P -0 Standard   SR    Klasse  F Bar in Datei / project/ F Bar.php              oo                     ...
Wiederverwendbarer Code?     =eigenes Package!                           Mayflower GmbH I 19
Beispiel: UUID library{    "name": "domnikl/uuid",    "type": "library",    "description": "UUID generator class for PHP",...
eigene Repositories                      Mayflower GmbH I 21
SatisI Symfony2 Console AnwendungI lightweightI erzeugt Static RepositoriesI lagert Paketquellen aus (packages.json)I für ...
PackagistI Symfony2 und Doctrine2 WebanwendungI MySQL, PostgreSQL, SQLite, etc.I crawlt Pakete selbstständigI Sources: git...
Packagist            Mayflower GmbH I 24
Vielen Dank für Ihre Aufmerksamkeit!      Referent   Dominik Liebler                 dominik.liebler@mayflower.de         ...
Nächste SlideShare
Wird geladen in …5
×

PHP Dependency und Paket Management mit Composer

3.329 Aufrufe

Veröffentlicht am

Vortragsfolien von Dominik Liebler

Jedes moderne PHP Projekt hat Abhängigkeiten zu Drittsoftware, sei es das MVC Framework, ORMs oder auch Client-APIs für verschiedene Dienste. Composer hilft dabei den Überblick zu bewahren und dem Versionschaos zu entgehen. Im ersten Teil des Vortrags wird es darum gehen, bestehende Packages in ein Projekt einzubinden und selbst eigene Packages zu erstellen. Der zweite Teil wird beleuchten, wie man selbst ein Repository mit Hilfe von Satis oder Packagist für die eigenen Pakete einrichtet und verwaltet.

0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
3.329
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
385
Aktionen
Geteilt
0
Downloads
8
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

PHP Dependency und Paket Management mit Composer

  1. 1. P Dependency und P HP aketManagement mit ComposerDominik Liebler I 22. März 2012 © Mayflower GmbH 2012
  2. 2. Dependency Management, warum eigentlich?I Abhängigkeiten Framework (ZF Symfony2, ...) , OR M AP Clients II Code Reusability Rauslösen von wiederverwendbarem Code viele kleine Libraries statt Framework Monolithen DR und Dont reinvent the wheel! Y Mayflower GmbH I 2
  3. 3. Warum nicht PEAR verwenden?I globale Installation von PaketenI schwierige Kontrolle der Paketversionen im ProjektI QA Prozess bei pear.php.net Coding Standards RFCsI Aufsetzen eines PEARChannels zeitaufwändig und nicht einfach genug Mayflower GmbH I 3
  4. 4. Composer! Mayflower GmbH I 4
  5. 5. Warum Composer?I lokale Installation von PaketenI Config im Repository gleiche Versionen bei jedem Developer Dependencies an zentraler Stelle dokumentiertI direkter Zugriff auf git, svn, tar.gz filesI zentrales Repository/ Channel nicht zwingend benötigt Mayflower GmbH I 5
  6. 6. 2 TeileI Composer IPackagist Dependency Manager Default Paketrepository http:/ / getcomposer.org http:/ / packagist.org Mayflower GmbH I 6
  7. 7. HistoryI Start: ~April 2011I Einflüsse: npm (node.js) und bundler (Ruby)I Wurzeln in der Symfony2 Community wird seit Anfang 2012 für Symfony2 verwendetI > 400 Pakete auf packagist.orgI Github Service Hook für Packagist Mayflower GmbH I 7
  8. 8. Composer ArchitekturI einzelnes PHARPaketI simple JSON ConfigsI bedient externe Tools für VCSI kann git, svn, hg, zip, tar.gz, etc.I benutzt AP von Github, Bitbucket Is Mayflower GmbH I 8
  9. 9. Installationcurl -s http://getcomposer.org/installer | php Mayflower GmbH I 9
  10. 10. Paketkonfigurationen Mayflower GmbH I 10
  11. 11. Beispiel: Paket von Packagist (composer.json){"require": {"doctrine/couchdb": "*"}} Mayflower GmbH I 11
  12. 12. Pakete installlierenphp composer.phar install Mayflower GmbH I 12
  13. 13. Beispiel: Paket von Github{ "repositories": [ { "type": "vcs", "url": "https://github.com/nrk/predis" } ], "require": { "predis/predis": "v0.7.0" }} Mayflower GmbH I 13
  14. 14. Pakete updatenphp composer.phar update Mayflower GmbH I 14
  15. 15. Beispiel: Paket von PEAR{ "repositories": [ { "type": "pear", "url": "http://pear2.php.net" } ], "require": { "pear-pear2/PEAR2_HTTP_Request": "*" }} Mayflower GmbH I 15
  16. 16. Beispiel: Paket von Subversion{ "repositories": [{ "type": "package", "package": { "name": "zend/framework", "version": "1.11.11", "source": { "url": "http://framework.zend.com/svn/framework/standard", "type": "svn", "reference": "tags/release-1.11.11/" } } }], "require": { "zend/framework": "1.11.*" }} Mayflower GmbH I 16
  17. 17. Beispiel: ZIP Datei{ "repositories": [{ "type": "package", "package": { "name": "smarty/smarty", "version": "3.1.7", "dist": { "url": "http://www.smarty.net/files/Smarty-3.1.7.zip", "type": "zip" } } }], "require": { "smarty/smarty": "3.1.*" }} Mayflower GmbH I 17
  18. 18. Autoloading: PSR-0I P -0 Standard SR Klasse F Bar in Datei / project/ F Bar.php oo oo/I Classloader wird generiert vendor/.composer/autoload.php vendor/.composer/autoload_namespaces.phpI Einbinden: require vendor/.composer/autoload.php; Mayflower GmbH I 18
  19. 19. Wiederverwendbarer Code? =eigenes Package! Mayflower GmbH I 19
  20. 20. Beispiel: UUID library{ "name": "domnikl/uuid", "type": "library", "description": "UUID generator class for PHP", "keywords": ["uuid"], "homepage": "http://www.mayflower.de", "license": "MIT", "authors": [ {"name": "Dominik Liebler", "email": "dominik.liebler@mayflower.de"} ], "require": { "php": ">=5.3.0" }, "autoload": { "psr-0": { "MayflowerUuid": "lib/" } }} Mayflower GmbH I 20
  21. 21. eigene Repositories Mayflower GmbH I 21
  22. 22. SatisI Symfony2 Console AnwendungI lightweightI erzeugt Static RepositoriesI lagert Paketquellen aus (packages.json)I für kleine Projekte geeignetI https:/ / github.com/ composer/ satis Mayflower GmbH I 22
  23. 23. PackagistI Symfony2 und Doctrine2 WebanwendungI MySQL, PostgreSQL, SQLite, etc.I crawlt Pakete selbstständigI Sources: git, svn, hgI Suche nach PaketenI https:/ / github.com/ composer/ packagist Mayflower GmbH I 23
  24. 24. Packagist Mayflower GmbH I 24
  25. 25. Vielen Dank für Ihre Aufmerksamkeit! Referent Dominik Liebler dominik.liebler@mayflower.de +49 931 35965 1180 Mayflower GmbH Gneisenaustraße 10/ 11 97074 Würzburg @domnikl29.03.12 Mayflower GmbH 25

×