Was ist ein CLI-Framework für PHP und warum wird es benötigt?
Ein CLI (Command Line Interface) Framework für PHP ist ein Werkzeug, das die Erstellung von Konsolenanwendungen und Skripten vereinfacht. Anstatt Argumente manuell mit $argv zu parsen und Ein-/Ausgabe zu verarbeiten, erhalten Sie eine fertige Architektur mit Unterstützung für Befehle, Optionen, farbige Ausgabe, Fortschrittsbalken und sogar interaktive Menüs.
In der modernen PHP-Entwicklung werden CLI-Frameworks überall eingesetzt:
- Automatisierung von Aufgaben (DB-Migrationen, Caching, Deployment)
- Code-Generierung (Scaffolding)
- CRON-Skripte und Hintergrundverarbeiter
- DevOps- und CI/CD-Tools
Schauen wir uns die fünf beliebtesten Lösungen an, die Sie auf pythonlib.ru verwenden können.
1. Symfony Console — der Industriestandard
Symfony Console ist das ausgereifteste und beliebteste CLI-Framework für PHP. Es wird in Laravel Artisan, Doctrine, Composer und Hunderten anderer Projekte verwendet.
Installation
composer require symfony/consoleBeispiel: Einfache "Hello World"-Anwendung
// hello.phprequire __DIR__ . '/vendor/autoload.php';
use Symfony\\Component\\Console\\Application;use Symfony\\Component\\Console\\Command\\Command;use Symfony\\Component\\Console\\Input\\InputInterface;use Symfony\\Component\\Console\\Output\\OutputInterface;
class HelloCommand extends Command{ protected static $defaultName = 'app:hello';
protected function configure(): void { $this->setDescription('Benutzer begrüßen'); }
protected function execute(InputInterface $input, OutputInterface $output): int { $output->writeln('<info>Hallo, Welt!</info>'); return Command::SUCCESS; }}
$application = new Application();$application->add(new HelloCommand());$application->run();Wichtige Funktionen
- Automatische Hilfegenerierung (
--help) - Unterstützung für Optionen und Argumente mit Validierung
- Farbige Ausgabe durch Stile (info, error, comment)
- Fortschrittsbalken, Tabellen, Fragen
- Testen von Befehlen mit
CommandTester
2. Laravel Zero — Micro-Framework basierend auf Laravel
Laravel Zero ist eine abgespeckte Version von Laravel, optimiert für die CLI. Ideal geeignet, wenn Sie mit dem Laravel-Ökosystem vertraut sind, aber nicht das gesamte Framework mitnehmen möchten.
Installation
composer create-project laravel-zero/laravel-zero my-cli-appBeispiel: Befehl mit Argumenten
// app/Commands/GreetCommand.phpnamespace App\\Commands;
use LaravelZero\\Framework\\Commands\\Command;
class GreetCommand extends Command{ protected $signature = 'greet {name : Benutzername} {--yell : Schreien?}'; protected $description = 'Begrüßung mit Namen';
public function handle(): int { $name = $this->argument('name'); $message = "Hallo, $name!"; if ($this->option('yell')) { $message = strtoupper($message); } $this->info($message); return self::SUCCESS; }}Was ist enthalten?
- Eloquent ORM (optional)
- Artisan-ähnliche Befehle
- Unterstützung für Warteschlangen und Aufgaben
- Migrationen und Seeding für die Datenbank
- Integrierte Kompilierung in ein PHAR-Archiv
3. Minicli — minimalistisch und schnell
Minicli ist ein leichtgewichtiges CLI-Framework ohne Abhängigkeiten. Es wiegt weniger als 100 KB und ist ideal für Microservices und einfache Dienstprogramme.
Installation
composer require minicli/minicliBeispiel: Interaktive Umfrage
// app.phprequire __DIR__ . '/vendor/autoload.ph Auch in der Bibliothek
sqlc für Go: Vollständige Anleitung mit Beispielen
PDF-Berichte in Go generieren: Bibliotheksübersicht und Codebeispiele
Gradle Kotlin DSL für Kotlin: Vollständige Anleitung mit Beispielen