Minicli ist ein minimalistisches, abhängigkeitsfreies Framework zum Erstellen von CLI-zentrierten PHP-Anwendungen. Es bietet eine strukturierte Möglichkeit zum Organisieren Ihrer Befehle sowie verschiedene Hilfsfunktionen, die das Arbeiten mit Befehlsargumenten, das Einholen von Benutzereingaben und das Drucken farbiger Ausgaben erleichtern.
Quicklinks:
Was bedeutet es, unabhängig zu sein? Das bedeutet, dass Sie eine funktionierende CLI-PHP-Anwendung ohne Dutzende verschachtelter Benutzerlandabhängigkeiten erstellen können. Das Basispaket minicli/minicli hat nur Testabhängigkeiten und eine einzige Systemanforderung:
Hinweis: Wenn Sie Benutzereingaben erhalten möchten, ist auch die PHP-Erweiterung
readlineerforderlich.
Es gibt Ihnen viel Spielraum, Ihre eigenen Abhängigkeiten auszuwählen.
Es gibt zwei Möglichkeiten, anzufangen. Wenn Sie das Nötigste wünschen, was wir „Minimalistische App“ nennen, können Sie ein einziges PHP-Skript mit Ihrer gesamten Anwendung erstellen. Wenn Sie eine strukturiertere Anwendung mit Befehlen und Unterbefehlen wünschen, sollten Sie Befehlsnamespaces verwenden, um Ihre Befehle in Controllern zu organisieren.
Wenn Sie nur ein paar einfache Befehle einrichten möchten, die über minicli ausgeführt werden, müssen Sie lediglich eine App erstellen und Ihre Befehle als anonyme Funktionen registrieren.
composer require minicli/minicli aus – dadurch wird eine neue Datei composer.json generiert.minicli -Skript mit folgendem Inhalt: #!/usr/bin/env php
<?php
if ( php_sapi_name () !== ' cli ' ) {
exit ;
}
require __DIR__ . ' /vendor/autoload.php ' ;
use Minicli App ;
use Minicli Command CommandCall ;
$ app = new App ();
$ app -> setSignature ( ' ./minicli mycommand ' );
$ app -> registerCommand ( ' mycommand ' , function ( CommandCall $ input ) {
echo " My Command! " ;
var_dump ( $ input );
});
$ app -> runCommand ( $ argv ); Machen Sie es dann ausführbar und führen Sie minicli mit Ihrem Befehl aus:
chmod +x minicli
./minicli mycommandFür eine strukturiertere Anwendung mit Controllern und Diensten verwenden Sie am besten Befehlsnamespaces. Unser Anwendungsvorlagen-Repository ist ein hervorragender Ausgangspunkt/Vorlage, um Minicli auf diese Weise einzurichten.
Um ein neues Projekt mit der minicli/application Vorlage zu erstellen, führen Sie Folgendes aus:
composer create-project --prefer-dist minicli/application myapp
Dadurch wird eine Verzeichnisstruktur wie die folgende generiert:
.
app
└── Command
└── Help
├── DefaultController.php
├── TableController.php
└── TestController.php
├── composer.json
├── docs
├── LICENSE
├── minicli
├── mkdocs.yml
└── README.md
Jedes Verzeichnis in app/Command stellt einen Command-Namespace dar. Die Klassen in app/Command/Help stellen Unterbefehle dar, auf die Sie über den Hauptbefehl help zugreifen können.
Sie können die Bootstrapping-Anwendung jetzt ausführen mit:
./minicli helpDie Dokumentation enthält detailliertere Informationen zum Erstellen von Befehlen und zum Arbeiten mit Ausgaben.
Minicli unterstützt die Verwendung von Farbthemen, um den Stil der Befehlszeilenausgabe zu ändern. Derzeit gibt es neben dem Standardthema drei integrierte Designs:
Um das Design festzulegen, übergeben Sie beim Initialisieren der App im Skript ein Konfigurationsarray mit einem theme . Integrierte Themes benötigen ein führendes -Zeichen:
$ app = new App ([
' theme ' => ' Unicorn '
]);Um das integrierte Standarddesign zu verwenden, schließen Sie die Designkonfigurationseinstellung nicht ein oder legen Sie sie auf eine leere Zeichenfolge fest.
Auch benutzerdefinierte Themes können in Ihrem Projekt erstellt und definiert werden. Legen Sie in diesem Fall den Theme-Namen inklusive Namensraum ohne führendes fest:
$ app = new App ([
' theme ' => ' AppThemeBlueTheme '
]);Die obige Einstellung würde das folgende Beispielthema verwenden:
<?php
// File : app / Theme / BlueTheme . php
namespace App Theme ;
use Minicli Output Theme DefaultTheme ;
use Minicli Output CLIColors ;
class BlueTheme extends DefaultTheme
{
public function getThemeColors (): array
{
return [
' default ' => [ CLIColors:: $ FG_BLUE ],
' alt ' => [ CLIColors:: $ FG_BLACK , CLIColors:: $ BG_BLUE ],
' info ' => [ CLIColors:: $ FG_WHITE ],
' info_alt ' => [ CLIColors:: $ FG_WHITE , CLIColors:: $ BG_BLUE ]
];
}
}Benutzerdefinierte Designs müssen nur Stile definieren, die diejenigen im Standarddesign überschreiben.
Beiträge sind herzlich willkommen! Sie können mit Code, Dokumentation und Archivierungsproblemen beitragen. Weitere Informationen zum Beitragsprozess und was wir von Ihnen erwarten, finden Sie in unserem Beitragsdokument.
Minicli verwendet Pest PHP als Testframework. Sobald Sie alle Abhängigkeiten über composer install installiert haben, können Sie die Testsuite ausführen mit:
./vendor/bin/pest Um den Codeabdeckungsbericht zu erhalten, muss xdebug installiert sein. Dann können Sie Folgendes ausführen:
./vendor/bin/pest --coverageDadurch erhalten Sie detaillierte Informationen zur Codeabdeckung.
Die folgenden Tutorials auf dev.to bilden eine Reihe mit dem Namen „Building Minicli“, in der wir minicli von Grund auf erstellen:
Hinweis: Minicli hat sich seit dem ersten Schreiben dieser Serie stark weiterentwickelt, aber das war die Grundlage für das, was Minicli heute ist.