Ich bin auf der Suche nach einer Befehlsanalyse-Bibliothek ähnlich wie Thor , aber für PHP.
Genauer gesagt möchte ich etwas, das kann ...
git remote add <url>
erstellt ein Schlüssel / Wert-Paar wie my-command --some-option='value'
Keine der Lösungen, die ich bisher betrachtet habe, war zufriedenstellend.
Am ehesten kommt es auf die Console_Getargs von PEAR an, obwohl diese nicht beibehalten wird.
Der Befehl array( 'some-option' => 'value' )
verwendet Console_Getopt , obwohl er eine erhebliche Menge an manueller Verarbeitung durchführt, um die Funktionen in meinem System zu erreichen ersten drei Anforderungen.
PHPs pear
kann Unterbefehle nicht verarbeiten, und es scheint keine anderen integrierten Methoden zu geben, die diese Funktionalität approximieren.
Gibt es eine PHP-Bibliothek, die diesen Kriterien entspricht, die ich vielleicht übersehen habe?
Sie könnten Zend_Console_Getopt oder Console-Komponente von Symfony 2
GetOptionKit analysiert Argumente, behandelt Unterbefehle, generiert automatisch Hilfe und hat eine nette API. Es benötigt PHP 5.4+. Es wird auf GitHub gehostet und scheint aktiv gepflegt zu werden.
Für boolesche Optionen:
%Vor%Für inkrementelle Optionen:
%Vor%Für mehrere Werte:
%Vor%Es gibt auch eine Typ-Constraint-Option, die Ihnen hilft, einen Optionswert wie diesen zu erhalten:
%Vor%Ich benutze dieses Ссылка mit ziemlichem Erfolg für eine Weile. Es ist kurz (~ 30 Zeilen) und unterstützt beide Unterbefehle, die als kurze und lange Argumente bezeichnet werden.
Bei Verwendung in einem größeren Projekt würde ich die Komponente Symfony Console empfehlen. Seine Fähigkeiten gehen über das Parsen der Befehlszeile hinaus, aber es ist großartig.
Getopt.php erfüllt Ihre Anforderungen.
Darüber hinaus hilft Ihnen die echte objektorientierte Schnittstelle, eleganten PHP-Code zu schreiben.
Es ist gut dokumentiert und es hat keine externen Abhängigkeiten.
-v
) als auch lange (zB --version
) Optionen -abc
anstelle von -a -b -c
) -vvv
) --option value
und --option=value
-ab 1
anstelle von -a -b 1
) Wenn jemand nach einer Framework-unabhängigen Lösung mit den folgenden Features sucht:
Ich würde dieses Produkt Ссылка
vorschlagenTags und Links parsing php command-line command-line-interface