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.
2. Dependency Management, warum eigentlich?
I Abhängigkeiten
Framework (ZF Symfony2, ...)
,
OR M
AP Clients
I
I Code Reusability
Rauslösen von wiederverwendbarem Code
viele kleine Libraries statt Framework Monolithen
DR und Don't reinvent the wheel!
Y
Mayflower GmbH I 2
3. Warum nicht PEAR verwenden?
I globale Installation von Paketen
I schwierige Kontrolle der Paketversionen im Projekt
I QA Prozess bei pear.php.net
Coding Standards
RFCs
I Aufsetzen eines PEARChannels zeitaufwändig und nicht einfach
genug
Mayflower GmbH I 3
5. Warum Composer?
I lokale Installation von Paketen
I Config im Repository
gleiche Versionen bei jedem Developer
Dependencies an zentraler Stelle dokumentiert
I direkter Zugriff auf git, svn, tar.gz files
I zentrales Repository/ Channel nicht zwingend benötigt
Mayflower GmbH I 5
6. 2 Teile
I Composer IPackagist
Dependency Manager Default Paketrepository
http:/ / getcomposer.org http:/ / packagist.org
Mayflower GmbH I 6
7. History
I Start: ~April 2011
I Einflüsse: npm (node.js) und bundler (Ruby)
I Wurzeln in der Symfony2 Community
wird seit Anfang 2012 für Symfony2 verwendet
I > 400 Pakete auf packagist.org
I Github Service Hook für Packagist
Mayflower GmbH I 7
8. Composer Architektur
I einzelnes PHARPaket
I simple JSON Configs
I bedient externe Tools für VCS
I kann git, svn, hg, zip, tar.gz, etc.
I benutzt AP von Github, Bitbucket
Is
Mayflower GmbH I 8
18. Autoloading: PSR-0
I 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.php
I Einbinden:
require 'vendor/.composer/autoload.php';
Mayflower GmbH I 18
22. Satis
I Symfony2 Console Anwendung
I lightweight
I erzeugt Static Repositories
I lagert Paketquellen aus (packages.json)
I für kleine Projekte geeignet
I https:/ / github.com/ composer/ satis
Mayflower GmbH I 22
23. Packagist
I Symfony2 und Doctrine2 Webanwendung
I MySQL, PostgreSQL, SQLite, etc.
I crawlt Pakete selbstständig
I Sources: git, svn, hg
I Suche nach Paketen
I https:/ / github.com/ composer/ packagist
Mayflower GmbH I 23