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
readline
erforderlich.
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 mycommand
Fü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 help
Die 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 --coverage
Dadurch 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.