[[fhc:server|zurück zur Übersicht]]
====== Composer ======
Composer ist ein anwendungsorientierter Paketmanager.\\
===== Installation =====
==== Windows ====
Composer ist in PHP geschrieben, weshalb er auch den dazugehörigen Interpreter braucht.\\
Am einfachsten ist es, PHP per XAMPP [[https://www.apachefriends.org/de/index.html]] zu Installieren. In der Installationsroutine können neben PHP und Apache alle anderen Komponenten ausgelassen werden.\\
{{:xampp_installation_komponentenauswahl.png?500|}}\\
Folgend ist der Installationsordner auszuwählen, welchen man sich merken sollte, da er später bei der Composer-Installation benötigt wird\\
Nach Abschluss der Installation muss XAMPP NICHT gestartet werden.\\
\\
Anschließend kann Composer Installiert werden:\\
Download von [[https://github.com/composer/windows-setup/releases]] und die Installationsroutine Starten.\\
Auf der zweiten Seite wird php.exe verlangt, welche wir vorhin mit XAMPP installiert haben. Standardmäßig befindet sich diese nun in "C:\xampp\php\".
==== Debian ====
cd /usr/bin
sudo php -r "readfile('https://getcomposer.org/installer');" | php
==== Fedora ====
sudo dnf install composer
\\
===== Verwendung =====
Zur Verwendung wird im Projektverzeichnis eine Datei namens composer.json angelegt, in welcher per JSON "requirements" angegeben werden können.
==== Beispiel ====
{
"require": {
"components/jquery": "2.1.4",
"components/angular.js": "1.3.16",
"components/bootstrap": "3.3.5",
"michelf/php-markdown": "1.5.0"
}
}
Bei den Versionen können auch Wildcards, wie z.B.:2.1.*
nimmt die höchste 2.1.XXX Version.\\
Oder *
nimmt immer die höchste verfügbare Version.\\
Wenn nun in diesem Verzeichnis composer.phar install
aufgerufen wird, werden automatisch alle Requirements in "./vendor" installiert.\\
Zusätzlich wird dabei eine "composer.lock" angelegt, welche die tatsächlich installierten Versionen eingetragen hat. Sollte nun also mit Wildcards gearbeitet werden(z.B.:"2.1.*") und beim Ausführen von "composer.phar install" 2.1.14 die aktuellste 2.1.* Version seien, wird diese installiert und in der composer.lock eingetragen. Wenn nun eine Version 2.1.15 released wird, und das Projekt auf einem anderen Rechner installiert wird, würde "composer.phar install" die Version 2.1.15 installieren und die composer.lock überschreiben.\\
Möchte man nun jedoch die originale tatsächlich installierte Version nutzen, kann dies per "composer.phar update" geschehen(dieser Befehl verwendet nicht die composer.json, sonder die composer.lock).
\\
==== GIT ====
üblicherweise werden composer.json, composer.lock mit eingecheckt, um composer.phar install und composer.phar update ausführen zu können. Um doppelten Code auf git zu vermeiden, wird der "vendor" Ordner nicht mit committed.
\\
==== Requirements hinzufügen ====
Zusätzliche Requirements können auf [[https://packagist.org]] gefunden werden.
=== Beispiel ===
{{:packagist_beispiel.png?500|}}\\
In diesem Beispiel haben wir uns entschieden, jqueryui-theme-bootstrap per composer zu installieren. Hierzu müssen wir nur den Namen des Pakets(die Überschrift) in unser composer.json eintragen.
{
"require": {
"components/jquery": "2.1.4",
"components/angular.js": "1.3.16",
"components/bootstrap": "3.3.5",
"michelf/php-markdown": "1.5.0",
"components/jqueryui-theme-bootstrap": "*"
}
}
und anschließend "composer.phar install" oder "composer.phar update" ausführen. Sollten keine Fehler auftreten, wird sich nun in vendor/components/ ein ordner namens jqueryui-theme-bootstrap befinden, welcher dieses Paket beinhaltet. Sollte Dieses wiederum Abhängigkeiten auf andere Projekte aufweisen, werden diese von Composer, wenn möglich automatisch aufgelöst.
==== Custom Requirements ====
Alternativ können auch ganze GIT-Repositories als Requirements angegeben werden.
{
"repositories": [
{"type": "git", "url": "https://github.com/BEISPIEL/BEISPIEL.git"}
],
"require": {
"components/jquery": "2.1.4",
"components/angular.js": "1.3.16",
"components/bootstrap": "3.3.5",
"michelf/php-markdown": "1.5.0",
"components/jqueryui-theme-bootstrap": "*",
"BEISPIEL/BEISPIEL": "x.x.x"
}
}
In "repositories" wird in einem Array ein neues Objekt angegeben, welches den typ und die URL zum Git-Repo beinhaltet. Anschließend kann dieses in den Requirements auf herkömmliche Art und weise angegeben werden. Auch hier gilt wiederum, dass sobald das angegebene Projekt eine composer.json/composer.lock beinhaltet, die dort eingetragenen Requirements auch aufgelöst werden.
\\
==== Hinweise ====
Bei einer Installation per OS-Paketmanager kann es vorkommen, dass der Befehl "composer.phar" mit "composer" ersetzt werden muss.(z.B.: bei Fedora mittels dnf)\\
XDebug dürfte eine enorme Auswirkungen auf die Performanz von Composer haben!