Heim > Backend-Entwicklung > PHP-Tutorial > PHP: Schreiben von Befehlszeilenanwendungen mit Makrame. Pt 1

PHP: Schreiben von Befehlszeilenanwendungen mit Makrame. Pt 1

Patricia Arquette
Freigeben: 2025-01-30 04:07:09
Original
642 Leute haben es durchsucht

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.

Beispielelemente

Das von uns abgeschlossene Projekt ist ein einfaches Befehlszeilenskript, mit dem die Liste der Follower von Mastodon -Benutzern zurückgegeben wird. Führen Sie das Skript wie unten gezeigt aus:

Im Handlungsskript -Operation php: writing command-line applications with macrame. pt 1

Der Benutzer wählt die erforderliche Mastodon -Instanz aus dem dynamischen Menü aus, gibt den Benutzernamen als kostenlosen Text ein, und das Skript zeigt den Animationsloader beim Abrufen der Daten an. Die Ausgabe ist ein wunderschöner Tisch im ASCII -Stil.

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

installieren
    Erstellen Sie ein leeres Skript
  • Lesen Sie die Befehlszeilenparameter
  • Erstellen Sie ein dynamisches Menü
  • Lesen Sie eine Zeile der Benutzereingabe (optionale Überprüfung)
  • Ausgangstextstil
  • setzen
  • macrame
  • installieren
makrame installieren:

Erstellen Sie ein Skript -Framework

<code class="language-bash">composer require gbhorwood/macrame</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Installieren von MacRame können wir ein grundlegendes "Hello World" -Skript einrichten und es als Startmodell verwenden. Obwohl technisch gesehen, ist dieses Framework nicht erforderlich, aber es macht unser Skript sicherer und standardisierter. Schauen wir uns den Code an:

Obwohl es nicht viele Codezeilen gibt, passieren hier viele Dinge. Schauen wir uns genauer an.

<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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Diese Zeile ist "Shebang". Grundsätzlich teilt es unserem Linux -Betriebssystem mit, das dieses Skript interpretieren soll. Auf diese Weise können wir Skripte ausführen, ohne zuerst PHP eingeben zu müssen. Shebang muss

die erste Zeile der Datei sein, schon vor & lt;?

<code class="language-php">#!/usr/bin/env php</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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:

    php 7.4
  • posix erweitert
  • mbstring Erweiterung
<:> Hinweis:

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
run Hello World

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Für diese Situation müssen wir nur überprüfen, ob diese Parameter vorhanden sind.

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

exist () Methode zurück zu boolean.

<code class="language-php">if ($macrame->running())</code>
Nach dem Login kopieren
Nach dem Login kopieren
?

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>
Nach dem Login kopieren
Nach dem Login kopieren
Wie der Name schon sagt, gibt die erste () -Methode den ersten

-Wartwert des Parameters zurück. Wenn wir das Skript wie dieses nennen:

<code class="language-php">$macrame->exit();</code>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Alle diese zusammenfügen, unser Skript sieht jetzt so aus:

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>
Nach dem Login kopieren
Wir hoffen auch, dass Benutzer unser Skript interaktiv verwenden können. Wenn sie die Parameter in der Befehlszeile nicht übergeben, fordern wir sie auf, die Daten einzugeben. Für Mastodon -Beispiele verwenden wir das Menü.

Makramemenü ist dynamisch.

Schreiben wir eine Funktion, die das Menü dem Benutzer anzeigt und den Wert des ausgewählten Wertes zurücksetzt:

<code class="language-bash">composer require gbhorwood/macrame</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

ergänzende Beschreibung des Menüstils

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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.

Lesen Sie eine Benutzerzeile, um

einzugeben

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>
Nach dem Login kopieren
Nach dem Login kopieren
In der letzten Zeile dieser Funktion fragen wir uns bei den Benutzern. Readline () Methode akzeptiert optionale $ prompt -Parameter; Der Rückgabewert ist die vom Benutzer eingegebene Zeichenfolge.

ergänzende Beschreibung der Eingabeverifizierung

Benutzer machen Fehler. Aus diesem Grund ist die Eingabeüberprüfung wichtig.

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>
Nach dem Login kopieren
Nach dem Login kopieren
Hier wenden wir zwei Verifizierungstests an: Der Text muss vier oder mehr Zeichen haben und können das Symbol "@" nicht enthalten. Für diese beiden Verifizierungsmethoden ist der zweite Parameter die Fehlermeldung, die wir dem Benutzer anzeigen, wenn die Überprüfung fehlschlägt.

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"?

Wenn unser Benutzer sensible Daten wie ein Passwort eingibt, möchten wir ihre Schlüssel möglicherweise nicht an das Terminal zurückzeigen, um zu vermeiden, dass das Spymen gesehen wird.

Um dieses Problem zu lösen, bietet MacRame die Version von Readline () mit dem Namen "ReadPassword ().

<code class="language-php">$macrame->exit();</code>
Nach dem Login kopieren
Nach dem Login kopieren
readPassword () Jede Schaltfläche wird in Form einer Sternnummer angezeigt.

Setzen Sie den Textstil

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Der Text zwischen und

wird (natürlich) verdickt. Das Dokument listet die vollständige Liste aller Marken auf. Eine Sache zu beachten ist, dass die Marke alle vorherigen Markierungen ausschaltet. Dies ist auf das Verhalten des ANSI -Übertragungscodes zurückzuführen.

Dies bedeutet, dass verschachtelte Markierungen nicht wie erwartet funktionieren. In diesem Beispiel wird beispielsweise die erste Marke geschlossen

und

Mark:

Das aktuelle Skript
<code class="language-php">#!/usr/bin/env php</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

bisher ist unser Beispielskript unten gezeigt:

Was ist das nächste
<code class="language-php">$macrame = new Macrame("示例 Macrame 脚本");</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Bisher haben wir die Parameter der Leserzeilenvorschriften vorgestellt, die Benutzereingabe aus Menü und Text erhalten und einige grundlegende Textstile für die Ausgabe erstellt. Im nächsten Artikel werden wir vorstellen:

Führen Sie die Funktion im Hintergrund aus, wenn der Animationsloader auf den Benutzer
    angezeigt wird
  • Schreiben Sie die Datei sicher
  • Ausgabe von Array -Daten als gutes Formatausgang
  • Pagling Display Long Output
  • Ausgang
  • grundlegender Benachrichtigungspegel
?

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage