PHP ist nicht nur Web: Warum Ihr nächstes CLI-Tool in PHP geschrieben sein sollte
Wenn wir „PHP“ hören, ist die erste Assoziation – Websites, WordPress und endlose echo im Browser. Aber PHP ist ein echtes Schweizer Taschenmesser für Entwickler. Eine seiner am meisten unterschätzten Funktionen ist die Möglichkeit, vollwertige CLI-Tools mit PHP zu erstellen. Ja, genau die Konsolenprogramme, die helfen, Routinen zu automatisieren, Logs zu parsen, Berichte zu generieren und das Leben eines DevOps-Ingenieurs ein wenig einfacher zu machen.
In diesem Artikel werden wir nicht nur über Theorie sprechen. Wir werden von Grund auf mehrere echte Konsolenanwendungen mit PHP schreiben. Sie erfahren, wie Sie Kommandozeilenargumente verarbeiten, die Ausgabe farbig gestalten, Fortschrittsbalken anzeigen und sogar interaktive Menüs erstellen. Am Ende des Artikels haben Sie eine fertige Vorlage, die Sie sofort in Ihren Projekten verwenden können.
Warum PHP für CLI? 3 gewichtige Argumente
Bevor wir in den Code eintauchen, lassen Sie uns klären, warum man überhaupt PHP für die Erstellung von CLI-Tools verwenden sollte. Es gibt doch Python, Node.js, Go…
- Sie kennen PHP bereits. Wenn Sie ein PHP-Webentwickler sind, müssen Sie keine neue Syntax lernen, um ein Skript für ein Datenbank-Backup oder Deployment zu schreiben.
- Einheitliches Ökosystem. Sie können dieselben Bibliotheken (über Composer), dieselben ORMs und dieselben Template-Engines verwenden. Möchten Sie ein Skript, das einen PDF-Bericht aus der Datenbank generiert? Bitte sehr.
- Entwicklungsgeschwindigkeit. PHP-Skripte werden sehr schnell geschrieben. Für einfache Tools ist dies die ideale Wahl – kein Kompilieren, kein Einrichten der Umgebung, einfach starten und loslegen.
Natürlich ist es für hochbelastete Dienste oder komplexe Systemtools besser, C oder Rust zu nehmen. Aber für 90% der alltäglichen Aufgaben ist PHP perfekt geeignet.
Von Null zum ersten CLI-Tool: Hallo, Welt! im Terminal
Beginnen wir mit dem Einfachsten. Erstellen Sie eine Datei hello.php und schreiben Sie:
#!/usr/bin/env php<?php
echo "Hallo, Terminal!";Die erste Zeile ist ein Shebang. Sie teilt dem System mit, dass diese Datei mit PHP ausgeführt werden soll. Ohne sie müssten Sie jedes Mal php hello.php schreiben, damit reicht einfach ./hello.php.
Vergessen Sie nicht, der Datei Ausführungsrechte zu geben:
chmod +x hello.phpStarten Sie nun:
./hello.phpHerzlichen Glückwunsch! Sie haben gerade Ihr erstes CLI-Tool mit PHP erstellt. Das ist unglaublich einfach, oder?
Arbeiten mit Argumenten: Das Tool nützlich machen
Jedes ernsthafte Konsolenprogramm sollte Argumente akzeptieren können. PHP bietet dafür zwei superglobale Arrays: $argv und $argc.
$argv– Array der Argumente. Das erste Element ist der Skriptname.$argc– Anzahl der Argumente.
Schreiben wir einen einfachen Taschenrechner – addieren wir zwei Zahlen, die als Argumente übergeben werden.
Einfacher Taschenrechner mit PHP CLI
#!/usr/bin/env php<?php
if ($argc !== 3) { echo "Verwendung: {$argv[0]} <Zahl1> <Zahl2>"; exit(1);}
$a = (int)$argv[1];$b = (int)$argv[2];
echo "Summe: " . ($a + $b) . "";echo "Differenz: " . ($a - $b) . "";echo "Produkt: " . ($a * $b) . "";echo "Quotient: " . ($a / $b) . "";Starten wir:
./calc.php 10 5Ausgabe:
Summe: 15Differenz: 5Produkt: 50Quotient: 2Aber das ist zu primitiv. In realen Projekten werden benannte Argumente (Flags) benötigt, wie bei git commit -m "message". Dafür gibt es in PHP die Funktion getopt().
Benannte Argumente mit getopt()
#!/usr/bin/env php<?php
$shortOptions = "u