Sulphur

Du kannst theoretisch einfach den Code in ein Verzeichnis packen, und alle Dateien in src/ inkludieren. Aktuell werden keine Abhängigkeiten genutzt, aber das kann sich jederzeit ändern.

Aber:
- Composer übernimmt das Autoloading (also “intelligente” includes)
- Mit Composer kannst du ganz leicht viele verschiedene Bibliotheken von Packagist in deinem Projekt nutzen
- Die Bibliotheken können mit Composer einfach aktualisiert werden
- Zur Not geht das auch ohne Kommandozeile auf dem Server, indem du das lokal machst und das vendor/-Verzeichnis hochlädst

http://getcomposer.org

>Und wofür ist der Eintrag auf packagist.org?


Und (wie) kann man per Composer runterladen?

Na so wie es in der Readme direkt unter dem von dir zitierten Satz steht.

Ich meinte nicht das auf GitHub sondern das auf packagist.org. Und ich würde gerne immer noch gerne wissen, was das überhaupt ist.

Das ist im Prinzip einfach ein öffentliches Repository, dass die Metadaten von GitHub (oder sonstwo) zieht.

Ich entwickele lokal -> commite lokal -> pushe die Commits auf GitHub -> erzeuge auf GitHub einen Release -> Packagist zieht sich eine Referenz auf den Release

Toll ist das, weil du jetzt in der composer.json nur noch eine Zeile einbauen musst, nämlich “beheh/sulphur”: “1.1.1"” in der require-Sektion. Weil Composer eng mit Packagist zusammenarbeitet, musst du gar nicht wissen ob das auf GitHub/sonstwo ist - Packagist weiß das und gibt dir daher einfach die richtige Version. Falls ich eines Tages auf eine andere Plattform umziehe, geht Packagist immer noch, ich muss meine Referenz dort updaten. Weiterhin kannst du genau die Version angeben, die du haben möchtest, und ich kann beliebig andere Bibliotheken vorraussetzen, falls es denn mal dazu kommt (z.B. um das Abrufen von einem anderen Server mit einer weit verbreiteten Bibliothek zu machen). Composer kümmert sich auch da dann drum, dass immer die Version da ist, die meine Bibliothek braucht.

Das alles (und viel mehr) gibt es übrigens auch in diesem tollen Artikel zu lesen.

Also einfach das von GitHub mittels Composer runterladen und in der composer.json beheh/sulphur": "1.1.1" (Frage wegen Anführungszeichen) reinschreiben? Und was ist, wenn du aktualisierst? Ist ja jetzt z.B. schon 1.1.2 vorhanden.

Composer lädt dann tatsächlich von packagist, aber das ist ja egal. Composer müsste auch einen Befehl haben, der automatisch den Eintrag in der composer.json macht.

Wenn du das in der Form (nur die Version) schreibst, bekommst du immer exakt dieses Paket.

Also einfach ab und zu schauen, ob's ne neue Version gibt und überschreiben, oder?

Und hab jetzt noch ne Frage zur Installation. Hätte das jetzt so gemacht:
1. update / upgrade
2. Install via. cUrl.
3. Datei (composer.phar) nach /usr/local/bin/composer verschieben

Aber wie dann weiter? Selbst in /var/www/ eine composer.json erstellen und was dann reinschreiben?

Dafür gibt es composer init. Das stellt dir ein paar Fragen und du kannst deine Abhängigkeiten hinzufügen.

Edit: Gefunden.

PS: Die composer.phar heißt jetzt "composer" (ohne Extension) und befindet sich in /usr/local/bin. Soweit richtig?

Ich würde einfach B_E's composer.json runterladen. Die gibt's ja auf GitHub. Aber wohin damit?

Nicht ganz: die Composer.json kann etwas mehr und da muss auch etwas mehr rein:

{
    "name": "dman/irgendeinprojekt",
    "type": "project",
    "require": {
        "beheh/sulphur": "~1.1"
    }
}


Der Befehl "composer update" lädt dir dann Sulphur runter und packt es in eine "vendor/"-Verzeichnis. Die Versionszahlen kann z.B. auch genaur eingegrenzt werden. ~1.1 heißt dabei das neueste aus der 1.1-Serie, also heute 1.1.2. Wenn es morgen 1.2.0 gibt, müsstest du das anpassen. Alternativ geht evtl. auch sowas wie >1, oder ~1 als Version, dann bist immer auf dem spätesten 1er-Release.
Das tolle ist jetzt, dass dir Composer im Vendor-Verzeichnis auch eine autoload.php gibt. Du machst also jetzt nur noch "require vendor/autoload.php" und kannst dann alle Klassen von Sulphur (oder jeder anderen geladenen Bibliothek) mit Präfix nutzen, also etwa "new Sulphur\ResponseFactory"…

>PS: Die composer.phar heißt jetzt "composer" (ohne Extension) und befindet sich in /usr/local/bin. Soweit richtig?


Das kann gut sein, ja.

>Ich würde einfach B_E's composer.json runterladen. Die gibt's ja auf GitHub. Aber wohin damit?


Nicht ganz, das ist die von der Bibliothek selbst und für dein Projekt an sich nicht relevant. Ich habe dir ein Beispiel im anderen Post gegeben. Die Datei kommt einfach in das Wurzelverzeichnis deines Projekts.

Bitte, nicht so viel auf einmal… Bitte langsam weil ich sonst garnichts verstehe…

Ich habe kein eigenes Projekt. o:
Ich würde einfach nur gerne wie auf der CMC-Seite sowas für meine Seite einrichten.

Ja, genau - das kleine bisschen "ist" dann dein Projekt.

Muss ich dafür irgendwas bei GitHub oder sonst irgendwo erstellen? Hätte zwar nen Account aber naja…

Nein, du brauchst einfach die anderswo genannte composer.json, damit Composer weiß, was er machen muss. Das mit der Projektbezeichnung kannst du weglassen, aber das wichtige sind die require-Zeilen.

Und wo kommt die Datei hin? In den selben Ordner (var/www/…), wo später der PHP-Script landet?

Genau. In dem Ordner wird dann auch das vendor/-Verzeichnis angelegt.

Okay. Aber kannst du mir das mit der autoload.php und dessen Einbindung nochmal in Ruhe erklären?
Die composer.json kann ich dann von dem Erstellungsort zum richtigen Verzeichnis verschieben, oder?