PHP Dependency und Paket Management mit Composer

3,198 views
3,059 views

Published on

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 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,198
On SlideShare
0
From Embeds
0
Number of Embeds
372
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

×