PHP ist keine Skriptsprache, die viel Aufmerksamkeit auf sich gezogen hat, aber dies ist schade, da PHP viele Ideale hat, die es zur idealen Wahl machen, eine Terminalanwendung zu schreiben.
Diese Artikelreihe wird vorgestellt, wie die Macrame -Bibliothek verwendet wird, um ein interaktives Befehlszeilenskript zu schreiben. Wir werden nach und nach ein Beispielelement vervollständigen. Stile und führen Sie die Funktion im Hintergrund aus, wenn der Animationsloader dem Benutzer angezeigt wird.
Weitere Informationen zu MacRame finden Sie auf der Dokumentseite.
Im Handlungsskript -Operation
Für alle, die diesen Schritt überspringen möchten, wird der vollständige Quellcode dieses Projekts in Form von GIST bereitgestellt.
Übersicht
Wie werden wir in diesem Abschnitt vorstellen:macrame
installierenErstellen Sie ein Skript -Framework
<code class="language-bash">composer require gbhorwood/macrame</code>
<code class="language-php">#!/usr/bin/env php <?php require __DIR__ . '/vendor/autoload.php'; use Gbhorwood\Macrame\Macrame; // 实例化 Macrame 对象。 // 参数是 ps(1) 所见的脚本名称 $macrame = new Macrame("示例 Macrame 脚本"); // 强制仅在命令行上执行脚本时才运行脚本 if ($macrame->running()) { // 验证主机系统是否可以运行 Macrame 脚本。失败时退出 $macrame->preflight(); // 将文本输出到 STDOUT $macrame->text("Hello World")->write(); // 清洁退出 $macrame->exit(); }</code>
die erste Zeile der Datei sein, schon vor & lt;?
<code class="language-php">#!/usr/bin/env php</code>
Hier erstellen wir ein Makrame -Objekt, das wir im Rest des Skripts verwenden werden. Sehr Standardinhalt. Der einzige interessante Teil ist der Parameter. Dies ist der Name des Betriebssystems, das uns das Skript gibt. Wenn wir beispielsweise PS für die Anzeige der laufenden Prozessliste ausführen, wird unser Skript diesen Namen angezeigt.
Diese Anweisung stellt sicher, dass der gesamte Code im Block nur ausgeführt wird, wenn das Skript in der Befehlszeile ausgeführt wird.
<code class="language-bash">composer require gbhorwood/macrame</code>
Wenn wir PHP für die Befehlszeile schreiben, ist unsere Kontrolle über die Umgebung nicht so stark wie Webserver, die wir haben und verwalten. Das Preflicht () ruft die lokale PHP -Umgebung auf. Die Mindestanforderungen sind:
Obwohl Makrame auf PHP 7.4 und 8.0 ausgeführt wird, da sich PHP in 8.1 geändert hat, wird die Symbol -Zeichenfolge möglicherweise nicht korrekt in der Ausgabe ausgerichtet.
Dies wird das Skript sauber beenden und den Erfolgscode von 0 zurückgeben. Darüber hinaus wird jede temporäre Datei, die während der Ausführung erstellt wurde, automatisch gelöscht. Es ist am besten, die Makramee -Funktion des Makramens zu verwenden () von PHP<code class="language-php">#!/usr/bin/env php <?php require __DIR__ . '/vendor/autoload.php'; use Gbhorwood\Macrame\Macrame; // 实例化 Macrame 对象。 // 参数是 ps(1) 所见的脚本名称 $macrame = new Macrame("示例 Macrame 脚本"); // 强制仅在命令行上执行脚本时才运行脚本 if ($macrame->running()) { // 验证主机系统是否可以运行 Macrame 脚本。失败时退出 $macrame->preflight(); // 将文本输出到 STDOUT $macrame->text("Hello World")->write(); // 清洁退出 $macrame->exit(); }</code>
run run
Nachdem wir das grundlegende Skript "Hello World" geschrieben haben, können wir seine Berechtigungen festlegen, um die Ausführung zu ermöglichen und es in der Befehlszeile auszuführen.Lesen Sie die Parameter
Makrame bietet eine Reihe von Tools für die Analyse- und Lesen -Befehlszeilenparameter. Beginnen wir mit einigen einfachen Dingen: Holen Sie sich die Versionsnummer, wenn Sie den folgenden Befehl verwenden, um das Skript aufzurufen:<code class="language-php">#!/usr/bin/env php</code>
Wir können diesen Zweck erreichen, indem wir die Argumente () -Methode auf dem Macrame -Objekt aufrufen. Um zu testen, ob die Parameter existieren, können wir die nachstehend gezeigte existent () -Methode verwenden:
<code class="language-php">$macrame = new Macrame("示例 Macrame 脚本");</code>
exist () Methode zurück zu boolean.
<code class="language-php">if ($macrame->running())</code>
Die Befehlszeilenparameter können auch verwendet werden, um einen Wert für Variablen zuzuweisen. Um den Benutzernamenwert festzulegen, hoffen wir möglicherweise, dass Benutzer das Skript wie folgt aufrufen können:Um den Wert dieses Parameters in unserem Skript zu erhalten, können wir die von args () bereitgestellte First () -Methode verwenden, wie unten gezeigt:
<code class="language-php">$macrame->preflight();</code>
-Wartwert des Parameters zurück. Wenn wir das Skript wie dieses nennen:
<code class="language-php">$macrame->exit();</code>
Dann gibt First () den Wert "Firstuser" zurück. Wenn wir den letzten Wert wollen, können wir letztes () anrufen. Wenn wir alle als Array wollen, werden wir alle () verwenden.
<code class="language-bash">chmod 755 ./examplescript.php ./examplescript.php</code>
Die vollständige Methodenliste der Befehlszeilenparameter zur Handhabung wird im Parameterdokument von Makrame eingeführt.
Erstellen Sie ein dynamisches Menü
<code class="language-bash">./examplescript.php --version # 或 ./examplescript.php -v</code>
Makramemenü ist dynamisch.
<code class="language-bash">composer require gbhorwood/macrame</code>
Die Kernfunktion hier besteht darin, Folgendes aufzurufen:
<code class="language-php">#!/usr/bin/env php <?php require __DIR__ . '/vendor/autoload.php'; use Gbhorwood\Macrame\Macrame; // 实例化 Macrame 对象。 // 参数是 ps(1) 所见的脚本名称 $macrame = new Macrame("示例 Macrame 脚本"); // 强制仅在命令行上执行脚本时才运行脚本 if ($macrame->running()) { // 验证主机系统是否可以运行 Macrame 脚本。失败时退出 $macrame->preflight(); // 将文本输出到 STDOUT $macrame->text("Hello World")->write(); // 清洁退出 $macrame->exit(); }</code>
Wir bieten ein Zeichenfolgenarray als Menüoption und einen optionalen Menü-Titeltext für Menü ()-& GT; Die Wahl des Benutzers wird als Zeichenfolge zurückgegeben.
Wenn Sie zu ERase () zu unserer Kette hinzufügen, können Sie das Menü auch auf dem Bildschirm löschen, nachdem der Benutzer eine Wahl getroffen hat. Diese Methode ist optional, kann aber tatsächlich ordentlich sein.
Nachdem wir die Menüfunktion erhalten haben, können wir die Art und Weise ändern, dass die Mastodon -Instanz abgerufen wird. Wir werden versuchen, es aus den Befehlszeilenparametern zu lesen.
<code class="language-php">#!/usr/bin/env php</code>
standardmäßig verwendet MacRame den Standardstil und die Farbe des Terminals, um das Menü anzuzeigen, und das Projekt, das das angezeigte Display hervorhebt, wird auf die Reverse -Anzeige eingestellt. Bei Bedarf können wir diese Einstellung ändern, indem wir unsere Kette zusätzliche Funktionen hinzufügen. Wenn wir beispielsweise die angezeigten Elemente hervorheben möchten, die als dicker roter Text angezeigt werden, können wir Folgendes schreiben:
<code class="language-php">$macrame = new Macrame("示例 Macrame 脚本");</code>
Das Menü -Dokument Seiten Ein vollständiger Überblick über alle Methoden, mit denen die Methode der Farbe, Stil und Ausrichtung des benutzerdefinierten Menüs angepasst werden kann.
Als nächstes werden wir den Weg zum Erhalt des Benutzernamens ändern, damit er auch interaktive Eingaben akzeptiert. In diesem Fall verwenden wir input ()-& gt; Das Folgende ist die Funktion:
<code class="language-php">if ($macrame->running())</code>
ergänzende Beschreibung der Eingabeverifizierung
Makrame wird mit vielen voreingestellten Methoden ausgestattet, um die Eingabe zu überprüfen. Wir können unserer Kette eine beliebige Anzahl von Überprüfungen hinzufügen. Input ()-& gt;
Schauen wir uns ein Beispiel an:
<code class="language-php">$macrame->preflight();</code>
Makrame -Eingabedokument enthält eine vollständige Liste aller vor -konstruktiven Überprüfungsfunktionen. Wenn wir ein eigenes benutzerdefiniertes Verifizierungsgerät schreiben möchten, wird es auch darin eingeführt.
Was ist mit der Ausgabe von "Point -Like Back Display"?
Um dieses Problem zu lösen, bietet MacRame die Version von Readline () mit dem Namen "ReadPassword ().
<code class="language-php">$macrame->exit();</code>
Im Beispiel, wie man eine Benutzerzeile des Benutzertextes lesen, haben wir eine große Anzahl von Codes gesehen, die zum Festlegen eines Eingabeaufforderungstextstils verwendet wurden. Lassen Sie es uns ausführlich untersuchen.
Makrame ermöglicht die Verwendung von ANSI -Code, um den terminalen Textausgangsstil festzulegen, mit dem wir den Stil und die Farbe des dicken Körpers und des schrägen Körpers auf unseren Text anwenden können.
Wir können diese Operation auf zwei Arten in unserem Skript ausführen. Es gibt einige Möglichkeiten, wie Style () und Color () (oder Color ()), oder wir können das grundlegende Textmarksystem verwenden.
Schauen wir uns zunächst die Methode an.
<code class="language-bash">composer require gbhorwood/macrame</code>
Hier verwenden wir die macrame text () -Methode, um ein "Text" -Objekt zu erstellen, dann Stil und Farbe anzuwenden und schließlich Get () als Zeichenfolge zurückzugeben.
Bitte beachten Sie, dass Stil- und Farbmethoden auf alle Texte in der Zeichenfolge angewendet werden. Wenn wir Stil und Farbtext mit reinem Text mischen möchten, müssen wir viele Sub -String erstellen und diese miteinander verbinden. Dies kann sehr problematisch sein, insbesondere im Umgang mit einer großen Anzahl von Texten.
oder wir können das Markup -System von Macrame verwenden, um die Einstellungen zum Textstil zu vereinfachen. Dies ist ein Beispiel:
<code class="language-php">#!/usr/bin/env php <?php require __DIR__ . '/vendor/autoload.php'; use Gbhorwood\Macrame\Macrame; // 实例化 Macrame 对象。 // 参数是 ps(1) 所见的脚本名称 $macrame = new Macrame("示例 Macrame 脚本"); // 强制仅在命令行上执行脚本时才运行脚本 if ($macrame->running()) { // 验证主机系统是否可以运行 Macrame 脚本。失败时退出 $macrame->preflight(); // 将文本输出到 STDOUT $macrame->text("Hello World")->write(); // 清洁退出 $macrame->exit(); }</code>
wird (natürlich) verdickt. Das Dokument listet die vollständige Liste aller Marken auf.
Dies bedeutet, dass verschachtelte Markierungen nicht wie erwartet funktionieren. In diesem Beispiel wird beispielsweise die erste Marke geschlossen
und Mark:
<code class="language-php">#!/usr/bin/env php</code>
Was ist das nächste
<code class="language-php">$macrame = new Macrame("示例 Macrame 脚本");</code>
Führen Sie die Funktion im Hintergrund aus, wenn der Animationsloader auf den Benutzer
?
Das obige ist der detaillierte Inhalt vonPHP: Schreiben von Befehlszeilenanwendungen mit Makrame. Pt 1. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!