Gibt es einen vollständigen Befehlszeilenparser für PHP?

7

Ich bin auf der Suche nach einer Befehlsanalyse-Bibliothek ähnlich wie Thor , aber für PHP.

Genauer gesagt möchte ich etwas, das kann ...

  • handle Subbefehlseingabe, z.B. %Code%
  • verknüpfen Optionen mit ihren Werten, z. git remote add <url> erstellt ein Schlüssel / Wert-Paar wie my-command --some-option='value'
  • generiert die Usage / Help-Informationen aus der Konfiguration, die an
  • übergeben wurde
  • processes -short und --long options
  • Die Bibliothek wird gepflegt
  • muss in PHP sein (sonst würde ich Thor benutzen)

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?

    
Blackcoat 01.07.2011, 21:08
quelle

5 Antworten

6
7

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%     
Ingve 20.08.2012 23:04
quelle
3

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.

    
magnetik 20.06.2012 12:20
quelle
3

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.

Funktionen

  • Unterstützt sowohl kurze (zB -v ) als auch lange (zB --version ) Optionen
  • Option Aliasing, dh. Eine Option kann sowohl eine lange als auch eine kurze Version haben
  • Verkürzte Kurzoptionen (z. B. -abc anstelle von -a -b -c )
  • Kumulative Optionen (zB -vvv )
  • Optionen können optionale oder obligatorische Argumente enthalten
  • Zwei alternative Schreibweisen für lange Optionen mit Argumenten: --option value und --option=value
  • Kollabierte kurze Optionen mit obligatorischem Argument am Ende (z. B. -ab 1 anstelle von -a -b 1 )

Beispielcode

%Vor%     
Demis Palma ツ 09.06.2016 16:38
quelle
2

Wenn jemand nach einer Framework-unabhängigen Lösung mit den folgenden Features sucht:

  • Einfache Definitionssyntax
  • Unterstützt lange und kurze Rufnamen
  • Unterstützt wiederholte Argumente (z. B. -v -v -v)
  • Unterstützt mehrere kurze Argumente (z. B. -abc vs -a -b -c)
  • Unterstützt 2 Möglichkeiten zum Setzen von Werten (z. B. --name = abc oder --name abc)
  • Unterstützt Doppelstrichtrennzeichen für abschließende Werte
  • erstellt Nutzungsdefinition

Ich würde dieses Produkt Ссылка

vorschlagen     
Patrick Forget 11.04.2014 15:36
quelle