Maison >développement back-end >tutoriel php >PHP: Rédaction d'applications de ligne de commande avec macrame. pt 1

PHP: Rédaction d'applications de ligne de commande avec macrame. pt 1

Patricia Arquette
Patricia Arquetteoriginal
2025-01-30 04:07:09645parcourir

PHP n'est pas un langage de script qui a attiré beaucoup d'attention, mais c'est dommage, car PHP a de nombreux idéaux qui en font le choix idéal pour rédiger une application terminale.

Cette série d'articles présentera comment utiliser la bibliothèque Macrame pour écrire un script de ligne de commande interactif. Nous terminerons progressivement un exemple d'élément. Styles et exécutez la fonction en arrière-plan lorsque le chargeur d'animation s'affiche à l'utilisateur.

Pour plus d'informations sur Macrame, visitez le site du document.

Exemples d'éléments

Le projet que nous terminerons est un simple script de ligne de commande qui est utilisé pour renvoyer la liste des abonnés des utilisateurs de Mastodon. Exécutez le script comme indiqué ci-dessous:

Dans l'opération de script d'exécution php: writing command-line applications with macrame. pt 1

L'utilisateur sélectionne l'instance Mastodon requise dans le menu dynamique, entre le nom d'utilisateur en tant que texte gratuit et le script affiche le chargeur d'animation lors de l'obtention des données. La sortie est une belle table de style ASCII.

Pour quiconque souhaite ignorer cette étape, le code source complet de ce projet est fourni sous forme d'essentiel.

Présentation

Dans cette section, comment allons-nous introduire:

installer macrame

    Créer un script vide
  • Lisez les paramètres de ligne de commande
  • Créer un menu dynamique
  • Lire une ligne d'entrée utilisateur (vérification facultative)
  • Définir le style de texte de sortie
  • installer macrame
installer macrame:

Créer un framework de script

<code class="language-bash">composer require gbhorwood/macrame</code>
Après avoir installé Macrame, nous pouvons configurer un script de base "Hello World" et l'utiliser comme modèle de départ. Bien que techniquement, ce cadre n'est pas nécessaire, mais l'utiliser rendra notre script plus sûr et plus standardisé. Jetons un coup d'œil au code:

Bien qu'il n'y ait pas beaucoup de lignes de code, beaucoup de choses se produisent ici. Regardons de plus près.

<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>
Cette ligne est "Shebang". Fondamentalement, il indique à notre système d'exploitation Linux qui interprète pour exécuter ce script. Cela nous permet d'exécuter des scripts sans avoir à taper PHP en premier. Shebang doit être

la première ligne du fichier, avant même & lt;?

<code class="language-php">#!/usr/bin/env php</code>

Ici, nous créons un objet de macrame que nous l'utiliserons dans le reste du script. Contenu très standard. La seule partie intéressante est le paramètre. C'est le nom du système d'exploitation qui nous donnera le script. Par exemple, si nous exécutons PS pour afficher la liste de processus en cours, notre script affichera ce nom.
Cette instruction garantit que tout le code du bloc est exécuté uniquement lorsque le script est exécuté sur la ligne de commande.

<code class="language-bash">composer require gbhorwood/macrame</code>

Lorsque nous écrivons PHP pour la ligne de commande, notre contrôle de l'environnement n'est pas autant que les serveurs Web que nous avons et gérons. Le preflicht () appelle l'environnement PHP local. Les exigences minimales sont:

    PHP 7.4
  • Extension POSIX
  • Extension MBSTRING
Remarque:

Bien que MacRame fonctionne sur PHP 7.4 et 8.0, car PHP a changé en 8.1, la chaîne de symbole peut ne pas être correctement alignée dans la sortie.

Cela quittra le script proprement et renverra le code de réussite de 0. De plus, tout fichier temporaire créé pendant l'exécution sera automatiquement supprimé. Il est préférable d'utiliser la fonction d'exit () de la macrame au lieu du DIE () de 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 Hello World

Après avoir écrit le script de base "Hello World", nous pouvons définir ses autorisations pour permettre l'exécution et l'exécuter sur la ligne de commande.

Lisez les paramètres

Macrame fournit un ensemble d'outils pour l'analyse et la lecture des paramètres de ligne de commande. Commençons par quelques choses simples: obtenez le numéro de version lorsque vous utilisez la commande suivante pour appeler le script:
<code class="language-php">#!/usr/bin/env php</code>

Pour cette situation, nous devons seulement vérifier si ces paramètres existent.

Nous pouvons atteindre cet objectif en appelant la méthode Args () sur l'objet Macrame. Pour tester si les paramètres existent, nous pouvons utiliser la méthode EXIST (), comme indiqué ci-dessous:
<code class="language-php">$macrame = new Macrame("示例 Macrame 脚本");</code>

existant () Méthode Retour à Boolean.

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

Les paramètres de ligne de commande peuvent également être utilisés pour attribuer une valeur pour les variables. Par exemple, pour définir la valeur du nom d'utilisateur, nous pouvons espérer que les utilisateurs pourront appeler le script comme ceci:

Pour obtenir la valeur de ce paramètre dans notre script, nous pouvons utiliser la méthode première () fournie par args (), comme indiqué ci-dessous:

<code class="language-php">$macrame->preflight();</code>
Comme le nom l'indique, la méthode première () renvoie la valeur

première

du paramètre. Si nous appelons le script comme ceci:
<code class="language-php">$macrame->exit();</code>

alors d'abord () renverra la valeur "FirstUser". Si nous voulons la dernière valeur, nous pouvons appeler Last (). Si nous voulons tous

en tant que tableau, nous utiliserons tous ().
<code class="language-bash">chmod 755 ./examplescript.php
./examplescript.php</code>

En mettant tous ces éléments ensemble, notre script ressemble à ceci maintenant:

La liste complète des paramètres de la ligne de commande de gestion est introduite dans le document du paramètre Macrame.

Créer un menu dynamique
<code class="language-bash">./examplescript.php --version
# 或
./examplescript.php -v</code>

Nous espérons également permettre aux utilisateurs d'utiliser notre script de manière interactive. S'ils ne transmettent pas les paramètres sur la ligne de commande, nous les inciterons à entrer les données. Pour les exemples de Mastodon, nous utiliserons le menu.

Le menu de macrame

est dynamique; les utilisateurs peuvent utiliser la touche fléchée pour monter et descendre la liste, puis appuyez sur la touche

pour sélectionner.

Écrivons une fonction qui affiche le menu à l'utilisateur et renvoie la valeur de la valeur sélectionnée:

<code class="language-bash">composer require gbhorwood/macrame</code>

La fonction principale ici est d'appeler ce qui suit:

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

Nous fournissons un tableau de chaîne comme option de menu et un texte de titre de menu facultatif pour menu () - & gt; Internet (), et le menu l'affiche automatiquement aux utilisateurs. Le choix de l'utilisateur sera renvoyé sous forme de chaîne.

En ajoutant à effacer () à notre chaîne, vous pouvez également choisir d'effacer le menu de l'écran après que l'utilisateur a fait un choix. Cette méthode est facultative, mais elle peut en effet être bien rangée.

Après avoir obtenu la fonction de menu, nous pouvons modifier la façon d'obtenir l'instance Mastodon. Nous essaierons de le lire à partir des paramètres de ligne de commande.

<code class="language-php">#!/usr/bin/env php</code>

Description supplémentaire du style de menu

Par défaut, Macrame utilise le style et la couleur par défaut du terminal pour afficher le menu, et le projet qui met en évidence l'affichage affiché est défini sur l'affichage inversé. Si nécessaire, nous pouvons modifier ce paramètre en ajoutant des fonctions supplémentaires à notre chaîne. Par exemple, si nous voulons mettre en surbrillance les éléments affichés affichés sous forme de texte rouge épais, nous pouvons écrire ceci:

<code class="language-php">$macrame = new Macrame("示例 Macrame 脚本");</code>

Le document de menu pages un aperçu complet de toutes les méthodes qui peuvent être utilisées pour personnaliser la méthode de couleur, de style et d'alignement du menu personnalisé.

Lisez une ligne d'utilisateurs pour entrer

Ensuite, nous modifierons la façon d'obtenir le nom d'utilisateur afin qu'il accepte également les entrées interactives. Dans ce cas, nous utiliserons l'entrée () - & gt; readLine () pour lire la chaîne de texte d'entrée utilisateur. Ce qui suit est la fonction:

<code class="language-php">if ($macrame->running())</code>
La dernière ligne de cette fonction est l'endroit où nous nous renseignons auprès des utilisateurs. La méthode readLine () accepte les paramètres de $ facultatifs; La valeur de retour est la chaîne entrée par l'utilisateur.

Description supplémentaire de la vérification des entrées

Les utilisateurs feront des erreurs. C'est pourquoi la vérification des entrées est importante.

Le macrame est livré avec de nombreuses méthodes prédéfinies pour vérifier l'entrée. Nous pouvons ajouter n'importe quel nombre de vérifications à notre chaîne. Input () - & gt; readLine () ne renvoie la valeur que après toutes les vérifications.

Jetons un coup d'œil à un exemple:

<code class="language-php">$macrame->preflight();</code>
Ici, nous appliquons deux tests de vérification: le texte doit être quatre caractères ou plus et ne pouvons pas inclure le symbole "@". Pour ces deux méthodes de vérification, le deuxième paramètre est le message d'erreur que nous afficherons à l'utilisateur en cas d'échec de la vérification.

La page Document d'entrée de macrame fournit une liste complète de toutes les fonctions de vérification pré-constructive. Si nous voulons écrire notre propre dispositif de vérification personnalisé, il y est également introduit.

Qu'en est-il de la sortie de "Point-Like Back Display"?

Si notre utilisateur entre dans des données sensibles, comme un mot de passe, nous ne voulons peut-être pas afficher leurs clés au terminal pour éviter d'être vu par les spymen.

Afin de résoudre ce problème, MacRame fournit la version "Point-Shaped Back Display" de ReadLine (), appelé readPassword ().

<code class="language-php">$macrame->exit();</code>
readPassword () Chaque bouton LEA sera révélé sous la forme d'un numéro d'étoile.

Définir le style de texte

Dans l'exemple de la façon de lire une ligne de texte utilisateur, nous avons vu un grand nombre de codes utilisés pour définir un style de texte rapide. Étudons-le en détail.

Macrame permet d'utiliser le code ANSI pour définir le style de sortie du texte terminal, ce qui nous permet d'appliquer le style et la couleur du corps épais et du corps oblique à notre texte.

Nous pouvons effectuer cette opération dans notre script de deux manières. Il existe certaines façons, telles que Style () et Color () (ou Color ()), ou nous pouvons utiliser le système de marque de texte de base.

Regardons d'abord la méthode.

<code class="language-bash">composer require gbhorwood/macrame</code>

Ici, nous utilisons la méthode Text () de MacRame pour créer un objet "texte", puis appliquons le style et la couleur, et enfin utilisons get () pour le renvoyer en tant que chaîne.

Veuillez noter que les méthodes de style et de couleur sont appliquées à tous les textes de la chaîne. Si nous voulons mélanger le style et le texte de couleur avec du texte pur, nous devrons créer de nombreuses sous-string et les connecter ensemble. Cela peut être très gênant, surtout lorsqu'il s'agit d'un grand nombre de textes.

ou, nous pouvons utiliser le système de balisage de MacRame pour simplifier les paramètres de style de texte. Ceci est un exemple:

<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>
Le texte entre et

Les marques seront épaissies (bien sûr). Le document répertorie la liste complète de toutes les marques. Une chose à noter est que la marque désactivera toutes les marques précédentes. Cela est dû au comportement du code de transfert ANSI.

Cela signifie que les marques imbriquées ne fonctionneront pas comme nous nous y attendons. Par exemple, dans cet exemple, la première marque sera fermée

et

Marque:

le script actuel
<code class="language-php">#!/usr/bin/env php</code>

Jusqu'à présent, notre exemple de script est illustré ci-dessous:

quel est le prochain
<code class="language-php">$macrame = new Macrame("示例 Macrame 脚本");</code>

Jusqu'à présent, nous avons introduit des paramètres de ligne de commande de lecture, obtenu la saisie de l'utilisateur à partir du menu et du texte, et créant des styles de texte de base pour la sortie. Dans le prochain article, nous présenterons:

Exécutez la fonction en arrière-plan lorsque le chargeur d'animation s'affiche à l'utilisateur
  • Écrivez le fichier en toute sécurité
  • Sortie des données du tableau comme une bonne sortie de format
  • Pagling Afficher la sortie longue
  • Sortie du niveau de notification de base
? Cet article a été initialement publié dans Grant Horwood Technology blog

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn