TYPO3Munich User Group
2. Februar 2016
Peter Kraume
Senior TYPO3 Developer
Twitter: @cybersmog
Mail: peter.kraume@bgm-gmbh.de
Slides: http://de.slideshare.net/pk77/
Composer ist ein Tool für
das Abhängigkeitsmanagement
in PHP.
Es erlaubt die Angabe von Abhängigkeiten zu anderen
Bibliotheken, die in einem Projekt benötigt werden,
und installiert diese in das Projekt.
Und was bedeutet das jetzt?
Warum Dependency Management?
• Abhängigkeiten
• Frameworks (Zend Framework, Symphony)
• API Clients
• TYPO3 Extensions
• Wiederverwendung von Code
• Rauslösen von wiederverwendbarem Code
• viele kleine Code Bibliotheken
• Das Rad nicht immer neu erfinden
Warum nicht PEAR verwenden?
• globale Installation von Paketen
• schwierige Kontrolle der Paketversionen im Projekt
• Qualitätskontrolle bei pear.php.net
• Coding Standards
• RFCs
• Aufsetzen einen PEAR Channels ist zeitaufwendig und nicht einfach
genug
Warum also Composer?
✓ Installation von Paketen auf Projektebene
✓ Die Konfiguration ist im Repository
✓ gleiche Version bei jedem Entwickler
✓ Abhängigkeiten sind an zentraler Stelle dokumentiert
✓ Source Code aus kann aus diversen Quellen geladen werden
✓ Zentrales Composer Repository: packagist.org
✓ Composer ♥ JSON
Historie
✓ Start: April 2011
✓ Erste Veröffentlichung: 1. März 2012
✓ 100% PHP
✓ Inspiriert von npm (node.js) und bundler (Ruby)
✓ Wurzeln in der Symfony2 Community
✓ > 80.000 Pakete auf Packagist registriert
✓ GitHub Service Hook für Packagist
globale Installation:
! Composer benötigt PHP 5.3.2+
Installation von Composer
$ curl -sS https://getcomposer.org/installer | php
$ mv composer.phar /usr/local/bin/composer
Beispiel domainfactory:
Eintrag in .bashrc oder .zshrc
Installation bei Shared Hosting
$ curl -sS https://getcomposer.org/installer | 
/usr/local/bin/php5-56STABLE-CLI
alias composer="/usr/local/bin/php5-56STABLE-CLI 
/kompletter/pfad/zur/composer.phar"
Wie funktioniert Composer?
Icons: Ryan Beck, Kirill Ulitin & Pieter J. Smits from the Noun Project
composer.json
- interne Abhängigkeiten
- öffentliche Abhängigkeiten
- Metadaten
git
svn
mercurial
Packagist.org
github.com
composer.json
✓ Meta Daten
✓ Konfiguration
✓ Abhängigkeiten
✓ Entwicklungsabhängigkeiten
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/peterkraume/demo_fsc"
}
],
"require": {
"kws/demo-fsc": "1.0.2"
}
}
Abhängigkeiten installieren
$ composer install
Verzeichnisinhalt nach der Installation
├── composer.json
├── composer.lock
└── vendor
├── autoload.php
├── composer
│ ├── autoload_classmap.php
│ ├── autoload_namespaces.php
│ ├── autoload_psr4.php
│ ├── autoload_real.php
│ ├── ClassLoader.php
│ ├── installed.json
│ └── LICENSE
└── kws
└── demo-fsc
composer.lock
✓ speichert die genauen Versionen der installierten Abhängigkeiten
✓ alle Projektbeteiligten bekommen exakt die gleichen Versionen
✓ composer.json und composer.lock sollten versioniert werden
Weitere Befehle
update aktualisiert die Abhängigkeiten auf die neuste Version

unter Berücksichtigung der composer.json und

aktualisiert composer.lock
validate überprüft composer.json und composer.lock
self-update aktualisiert composer.phar auf die neueste Version
show -i -t zeigt einen Baum aller installierten Pakete und deren

Abhängigkeiten
packagist.org
✓ registrierte Pakete
✓ 84.395
✓ verfügbare Versionen
✓ 426.883
✓ installierte Pakete
✓ 1.582.775.135

(seit 13.04.2012)
TYPO3 mit Composer installieren
Neueste TYPO3 Version installieren:
Aktuellen dev-master installieren:
Vorteile:
✓ Es geht schnell!
✓ Extension Download auf der Kommandozeile möglich
✓ Es gibt einen web/ Ordner
$ composer create-project typo3/cms-base-distribution ZielVerzeichnis
$ composer create-project typo3/cms-base-distribution 
ZielVerzeichnis dev-master
Verzeichnisinhalt nach der Installation
MeinProjekt
├── composer.json
├── composer.lock
├── vendor
│ ├── autoload.php
│ ├── bin
│ ├── cogpowered
│ ├── composer
│ ├── doctrine
│ ├── mikey179
│ ├── pear
│ ├── phpdocumentor
│ ├── phpspec
│ ├── phpunit
│ ├── phpwhois
│ ├── psr
│ ├── sebastian
│ ├── swiftmailer
│ ├── symfony
│ └── typo3
└── web
├── index.php -> ../vendor/typo3/cms/index.php
└── typo3 -> ../vendor/typo3/cms/typo3
Extension mit Composer installieren
Extension installieren:
✓ Alle TER Extensions sind auch per Composer verfügbar
✓ Unterstriche müssen durch Bindestriche ersetzt werden
✓ Wenn TYPO3 per Composer installiert wurde, ist der Download von
Extensions nur per Composer möglich
✓ Trotzdem müssen die Extensions noch im Extension Manager aktiviert
werden!
$ cd MeinProjekt
$ composer require typo3-ter/news
Änderungen durch die Installation
✓ composer.json
✓ composer.lock
✓ web/typo3conf/ext/news
diff --git a/composer.json b/composer.json
index d1028e5..cc04477 100644
--- a/composer.json
+++ b/composer.json
@@ -6,7 +6,8 @@
"description" : "TYPO3 CMS Base Distribution",
"license": "GPL-2.0+",
"require": {
- "typo3/cms": "~7.6.0"
+ "typo3/cms": "~7.6.0",
+ "typo3-ter/news": "^4.1"
},
"require-dev": {
"mikey179/vfsStream": "1.4.*@dev",
Fragen ?
Links
✓ https://getcomposer.org/
✓ https://packagist.org/
✓ Generelle Infos über TYPO3 und Composer

https://composer.typo3.org/
✓ Liste der via Composer verfügbaren Extensions

https://composer.typo3.org/satis.html
✓ https://wiki.typo3.org/Composer
✓ Erklärung der Versions Einschränkungen

https://getcomposer.org/doc/articles/versions.md
Vielen Dank!
Twitter: @cybersmog
Mail: peter.kraume@bgm-gmbh.de
Slides: http://de.slideshare.net/pk77/
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Composer und TYPO3

  • 2.
  • 3.
    Peter Kraume Senior TYPO3Developer Twitter: @cybersmog Mail: peter.kraume@bgm-gmbh.de Slides: http://de.slideshare.net/pk77/
  • 4.
    Composer ist einTool für das Abhängigkeitsmanagement in PHP. Es erlaubt die Angabe von Abhängigkeiten zu anderen Bibliotheken, die in einem Projekt benötigt werden, und installiert diese in das Projekt.
  • 5.
    Und was bedeutetdas jetzt?
  • 6.
    Warum Dependency Management? •Abhängigkeiten • Frameworks (Zend Framework, Symphony) • API Clients • TYPO3 Extensions • Wiederverwendung von Code • Rauslösen von wiederverwendbarem Code • viele kleine Code Bibliotheken • Das Rad nicht immer neu erfinden
  • 7.
    Warum nicht PEARverwenden? • globale Installation von Paketen • schwierige Kontrolle der Paketversionen im Projekt • Qualitätskontrolle bei pear.php.net • Coding Standards • RFCs • Aufsetzen einen PEAR Channels ist zeitaufwendig und nicht einfach genug
  • 8.
    Warum also Composer? ✓Installation von Paketen auf Projektebene ✓ Die Konfiguration ist im Repository ✓ gleiche Version bei jedem Entwickler ✓ Abhängigkeiten sind an zentraler Stelle dokumentiert ✓ Source Code aus kann aus diversen Quellen geladen werden ✓ Zentrales Composer Repository: packagist.org ✓ Composer ♥ JSON
  • 9.
    Historie ✓ Start: April2011 ✓ Erste Veröffentlichung: 1. März 2012 ✓ 100% PHP ✓ Inspiriert von npm (node.js) und bundler (Ruby) ✓ Wurzeln in der Symfony2 Community ✓ > 80.000 Pakete auf Packagist registriert ✓ GitHub Service Hook für Packagist
  • 10.
    globale Installation: ! Composerbenötigt PHP 5.3.2+ Installation von Composer $ curl -sS https://getcomposer.org/installer | php $ mv composer.phar /usr/local/bin/composer
  • 11.
    Beispiel domainfactory: Eintrag in.bashrc oder .zshrc Installation bei Shared Hosting $ curl -sS https://getcomposer.org/installer | /usr/local/bin/php5-56STABLE-CLI alias composer="/usr/local/bin/php5-56STABLE-CLI /kompletter/pfad/zur/composer.phar"
  • 12.
    Wie funktioniert Composer? Icons:Ryan Beck, Kirill Ulitin & Pieter J. Smits from the Noun Project composer.json - interne Abhängigkeiten - öffentliche Abhängigkeiten - Metadaten git svn mercurial Packagist.org github.com
  • 13.
    composer.json ✓ Meta Daten ✓Konfiguration ✓ Abhängigkeiten ✓ Entwicklungsabhängigkeiten { "repositories": [ { "type": "vcs", "url": "https://github.com/peterkraume/demo_fsc" } ], "require": { "kws/demo-fsc": "1.0.2" } }
  • 14.
  • 15.
    Verzeichnisinhalt nach derInstallation ├── composer.json ├── composer.lock └── vendor ├── autoload.php ├── composer │ ├── autoload_classmap.php │ ├── autoload_namespaces.php │ ├── autoload_psr4.php │ ├── autoload_real.php │ ├── ClassLoader.php │ ├── installed.json │ └── LICENSE └── kws └── demo-fsc
  • 16.
    composer.lock ✓ speichert diegenauen Versionen der installierten Abhängigkeiten ✓ alle Projektbeteiligten bekommen exakt die gleichen Versionen ✓ composer.json und composer.lock sollten versioniert werden
  • 17.
    Weitere Befehle update aktualisiertdie Abhängigkeiten auf die neuste Version
 unter Berücksichtigung der composer.json und
 aktualisiert composer.lock validate überprüft composer.json und composer.lock self-update aktualisiert composer.phar auf die neueste Version show -i -t zeigt einen Baum aller installierten Pakete und deren
 Abhängigkeiten
  • 18.
    packagist.org ✓ registrierte Pakete ✓84.395 ✓ verfügbare Versionen ✓ 426.883 ✓ installierte Pakete ✓ 1.582.775.135
 (seit 13.04.2012)
  • 19.
    TYPO3 mit Composerinstallieren Neueste TYPO3 Version installieren: Aktuellen dev-master installieren: Vorteile: ✓ Es geht schnell! ✓ Extension Download auf der Kommandozeile möglich ✓ Es gibt einen web/ Ordner $ composer create-project typo3/cms-base-distribution ZielVerzeichnis $ composer create-project typo3/cms-base-distribution ZielVerzeichnis dev-master
  • 20.
    Verzeichnisinhalt nach derInstallation MeinProjekt ├── composer.json ├── composer.lock ├── vendor │ ├── autoload.php │ ├── bin │ ├── cogpowered │ ├── composer │ ├── doctrine │ ├── mikey179 │ ├── pear │ ├── phpdocumentor │ ├── phpspec │ ├── phpunit │ ├── phpwhois │ ├── psr │ ├── sebastian │ ├── swiftmailer │ ├── symfony │ └── typo3 └── web ├── index.php -> ../vendor/typo3/cms/index.php └── typo3 -> ../vendor/typo3/cms/typo3
  • 21.
    Extension mit Composerinstallieren Extension installieren: ✓ Alle TER Extensions sind auch per Composer verfügbar ✓ Unterstriche müssen durch Bindestriche ersetzt werden ✓ Wenn TYPO3 per Composer installiert wurde, ist der Download von Extensions nur per Composer möglich ✓ Trotzdem müssen die Extensions noch im Extension Manager aktiviert werden! $ cd MeinProjekt $ composer require typo3-ter/news
  • 22.
    Änderungen durch dieInstallation ✓ composer.json ✓ composer.lock ✓ web/typo3conf/ext/news diff --git a/composer.json b/composer.json index d1028e5..cc04477 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,8 @@ "description" : "TYPO3 CMS Base Distribution", "license": "GPL-2.0+", "require": { - "typo3/cms": "~7.6.0" + "typo3/cms": "~7.6.0", + "typo3-ter/news": "^4.1" }, "require-dev": { "mikey179/vfsStream": "1.4.*@dev",
  • 23.
  • 24.
    Links ✓ https://getcomposer.org/ ✓ https://packagist.org/ ✓Generelle Infos über TYPO3 und Composer
 https://composer.typo3.org/ ✓ Liste der via Composer verfügbaren Extensions
 https://composer.typo3.org/satis.html ✓ https://wiki.typo3.org/Composer ✓ Erklärung der Versions Einschränkungen
 https://getcomposer.org/doc/articles/versions.md
  • 25.
    Vielen Dank! Twitter: @cybersmog Mail:peter.kraume@bgm-gmbh.de Slides: http://de.slideshare.net/pk77/ This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.