CLI-Frameworks für PHP: Symfony Console und Laravel Zero – vollständiger Leitfaden

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

CLI-Frameworks für PHP: Leistungsstarke Konsolenanwendungen erstellen

Die moderne PHP-Entwicklung beschränkt sich nicht nur auf Webanwendungen. Immer häufiger müssen Entwickler Konsolen- (CLI-) Werkzeuge erstellen: Warteschlangenbearbeiter, Migrationen, Berichtsgeneratoren, Datenparser. Für diese Aufgaben gibt es spezialisierte Frameworks, die die Erstellung von Konsolenbefehlen, die Verarbeitung von Argumenten, die Formatierung der Ausgabe und die Verwaltung von Abhängigkeiten vereinfachen.



Wichtige CLI-Frameworks für PHP

  • Symfony Console – die beliebteste Komponente von Symfony, verwendet in Laravel, Drupal, Composer und Hunderten anderer Projekte.
  • Laravel Zero – ein Mikro-Framework auf Basis von Laravel, optimiert für CLI-Anwendungen.
  • CLIFramework – ein leichtes Framework mit Unterstützung für Zsh/Bash-Autovervollständigung.
  • PHP CLI Tools – eine minimalistische Bibliothek für einfache Skripte.


Symfony Console: Der universelle Standard

Die Komponente symfony/console ist der De-facto-Standard für CLI-Anwendungen in PHP. Sie bietet einen vollständigen Satz von Werkzeugen zur Erstellung von Befehlen, einschließlich:

  • Automatische Analyse von Befehlszeilenargumenten und -optionen.
  • Formatierte Ausgabe mit Unterstützung für Farben, Tabellen und Fortschrittsbalken.
  • Interaktive Fragen und Autovervollständigung.
  • Ein flexibles Ereignissystem und einen Lebenszyklus für Befehle.


// Beispiel eines einfachen Befehls mit Symfony Console<?php// Datei: src/Command/GreetCommand.phpnamespace App\\Command;

use Symfony\\Component\\Console\\Command\\Command;use Symfony\\Component\\Console\\Input\\InputArgument;use Symfony\\Component\\Console\\Input\\InputInterface;use Symfony\\Component\\Console\\Output\\OutputInterface;

class GreetCommand extends Command{ protected static $defaultName = 'app:greet';

protected function configure(): void { $this ->setDescription('Begrüßt den Benutzer') ->addArgument('name', InputArgument::REQUIRED, 'Name des Benutzers') ->addOption('yell', null, null, 'In Großbuchstaben ausgeben'); }

protected function execute(InputInterface $input, OutputInterface $output): int { $name = $input->getArgument('name'); $message = "Hallo, $name!";

if ($input->getOption('yell')) { $message = strtoupper($message); }

$output->writeln($message); return Command::SUCCESS; }}

// Ausführung: php bin/console app:greet Ivan --yell


Laravel Zero: Laravel für die Kommandozeile

Laravel Zero ist ein Mikro-Framework, das den Komfort von Laravel (Eloquent ORM, Artisan, Blade, geplante Aufgaben) in die CLI-Welt überträgt. Es ist ideal für die Erstellung eigenständiger Konsolen-Dienstprogramme, die keine Weboberfläche benötigen.



Wichtige Funktionen von Laravel Zero:

  • Vertraute Syntax von Artisan-Befehlen.
  • Integrierte Datenbankunterstützung (SQLite, MySQL).
  • Aufgabenplaner (Cron-ähnliche Funktionalität).
  • Ausgabeformatierung mit Tabellen und Fortschrittsbalken.
  • Möglichkeit der Kompilierung in eine einzelne PHAR-Datei.


// Beispiel eines Befehls in Laravel Zero<?php// Datei: app/Commands/ExportUsers.phpnamespace App\\Commands;

use Illuminate\\Console\\Command;use App\\Models\\User;

class ExportUsers extends Command{ protected $signature = 'export:users {--format=csv : Ausgabeformat (csv/json)}'; protected $description = 'Exportiert die Benutzerliste';

public function handle(): int { $users = User::all(['id', 'name', 'email']); $format = $this->option('format');

if ($format === 'json') { $this->line($users->toJson(JSON_PRETTY_PRINT)); } else { $headers = ['

Empfehlungen