<div dir="ltr">Hallo Justin,<div><br></div><div>Composer ist ein Werkzeug um Abhängigkeiten bei PHP-Projekten zu verwalten. Du schreibst in eine Datei (composer.json) welche Bibliotheken Du in welchen Versionen haben möchtest (optional *) und rufst Composer auf. Das Tool installiert dann in einen Ordner vendor/ alle angegebenen Bibliotheken und falls nötig deren Abhängigkeiten. Composer stellt einen Autoloader zur Verfügung, so dass im Projekt nur noch "require 'vendor/autload.php' stehen muss und alles steht zur Verfügung.</div>
<div>Die zur Verfügung stehenden Bibliotheken sind alle hier registriert: <a href="http://packagist.org/">http://packagist.org/</a>, gehostet werden sie in der Regel auf Github.</div><div>Bei der Installation der Sachen kann zwischen Entwickler und Anwender unterschieden werden, so dass beispielsweise ersterer PHPUnit oder Debugging-Tools zusätzlich installiert bekommt und letzterer nicht.</div>
<div>Im Prinzip funktioniert Composer wie PEAR, nur projektspezifisch.<br></div><div><br></div><div>Genau erklärt wird alles hier: <a href="http://getcomposer.org/doc/00-intro.md">http://getcomposer.org/doc/00-intro.md</a></div>
<div><br></div><div>Vorteile:</div><div>* vereinfachte Installation von Abhängigkeiten, inklusive von deren Abhängigkeiten</div><div>* ein sehr gut getesteter Autoloader, der auch für den eigenen Code verwendet werden kann</div>
<div>* 3rd-Party-Software wandert in einen eigenen Ordner im Projekt</div><div><br></div><div>Ich möchte gerne Erweiterungen einbauen, die neue Abhängigkeiten einführen. Ohne Composer müsste ich mir ein Skript schreiben, dass die Sachen runterlädt und auspackt. Und die Anwendung müsste die einzelnen Installationsorte kennen und die jeweiligen Autoloader laden.</div>
<div>Mit Composer beschränkt dich der Aufwand auf neue Einträge in der composer.json und den Aufruf von "composer install" bzw "composer update".</div><div><br></div><div>Ich glaube Composer steht bei PHP für einen Paragimenwechsel in der Programmierung. Von <a href="http://de.wikipedia.org/wiki/Not-invented-here-Syndrom">http://de.wikipedia.org/wiki/Not-invented-here-Syndrom</a> geht man über zu <a href="http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants">http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants</a> .</div>
<div><br></div><div>Robert</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">Am 12. November 2013 22:52 schrieb  <span dir="ltr"><<a href="mailto:justin@justinotherguy.org" target="_blank">justin@justinotherguy.org</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Servus,<br>
<br>
Am 12.11.2013 um 20:32 schrieb Robert Ewald <<a href="mailto:robert%2Bvz@jtro.de">robert+vz@jtro.de</a>>:<br>
<div class="im"><br>
> Ich kann Euch versichern, Composer ist für PHP-Projekte in jeder Hinsicht ein Fortschritt: die Installation von externen Komponenten, die Handhabung ihrer Abhängigkeiten, ihre Aktualisierung und auch die Benutzung wird extrem vereinfacht.<br>

> Ein Beispiel:<br>
> $ git clone -b unittests <a href="https://github.com/r3wald/volkszaehler.org.git" target="_blank">https://github.com/r3wald/volkszaehler.org.git</a><br>
> $ cd <a href="http://volkszaehler.org/" target="_blank">volkszaehler.org/</a><br>
> $ composer update<br>
> $ vendor/bin/phpunit<br>
</div>[…]<br>
<div class="im">> Ich würde aber auch gerne mal ein paar Gegenargumente zu Composer hören.<br>
<br>
</div>ich kenne Composer gar nicht (nein, das ist nicht das Gegenargument (c; ) - was sind die Ziele?<br>
- [vereinfachte] Tests (und damit: potenziell höhere Code-Qualität)?<br>
- vereinfachter Einstieg für neue Entwickler? (oder: wird der Einstieg damit [noch] schwieriger?)<br>
- vereinfachte Installation der Middleware für neue Nutzer? (klingt für mich nicht so, muss aber auch kein Ziel sein; die Installation sollte m.E. dadurch zumindest nicht verkompliziert werden)<br>
<br>
<br>
Gruss, J.<br>
<br>
</blockquote></div><br></div>