ホームページ >バックエンド開発 >PHPチュートリアル >PHP:MacRameを使用してコマンドラインアプリケーションを作成します。 PT 1

PHP:MacRameを使用してコマンドラインアプリケーションを作成します。 PT 1

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-30 04:07:09685ブラウズ

PHPは、多くの注目を集めたスクリプト言語ではありませんが、これは残念です。なぜなら、PHPにはターミナルアプリケーションを書く理想的な選択となる多くの理想があるからです。

この一連の記事では、マクラメライブラリを使用してインタラクティブコマンドラインスクリプトを作成する方法を紹介します。スクリプトは徐々にMastodonユーザーフォロワーのリストを最初から最後まで取得し、次のトピックをカバーします。スタイル、およびアニメーションローダーがユーザーに表示されるときにバックグラウンドで関数を実行します。

マクラメの詳細については、ドキュメントサイトをご覧ください。

アイテムの例

私たちが完了するプロジェクトは、Mastodonユーザーのフォロワーのリストを返すために使用される単純なコマンドラインスクリプトです。以下に示すようにスクリプトを実行してください:

実行スクリプト操作ユーザーは、動的メニューから必要なMastodonインスタンスを選択し、ユーザー名を無料のテキストとして入力し、スクリプトはデータを取得するときにアニメーションローダーを表示します。出力は美しいASCIIスタイルのテーブルです。 php: writing command-line applications with macrame. pt 1 このステップをスキップしたい人のために、このプロジェクトの完全なソースコードがGISTの形で提供されます。
概要 このセクションでは、どのように紹介しますか:

マクラメ

をインストールします

空白のスクリプトを作成します

コマンドラインパラメーターを読み取ります

ダイナミックメニューを作成します
  • ユーザーの入力の行を読む(オプションの確認)
  • 出力テキストスタイルを設定します
  • マクラメ
  • をインストールします
  • マクラメをインストール:
  • スクリプトフレームワークを作成します
MacRameをインストールした後、基本的な「Hello World」スクリプトを設定し、開始モデルとして使用できます。技術的には、このフレームワークは必要ではありませんが、それを使用すると、スクリプトがより安全で標準化されます。コードを見てみましょう:

コード行はあまりありませんが、ここでは多くのことが起こります。よく見てみましょう。

<code class="language-bash">composer require gbhorwood/macrame</code>
この行は「シバン」です。基本的に、これはLinuxオペレーティングシステムに、どの通訳者がこのスクリプトを実行するかを指示します。これにより、最初にPHPを入力することなくスクリプトを実行できます。 shebang は、ファイルの最初の行である必要があります。

ここでは、スクリプトの残りの部分で使用するマクラメオブジェクトを作成します。非常に標準的なコンテンツ。唯一の興味深い部分はパラメーターです。これは、スクリプトを提供するオペレーティングシステムの名前です。たとえば、PSを実行して実行中のプロセスリストを表示すると、スクリプトにこの名前が表示されます。

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

このステートメントは、ブロック内のすべてのコードがコマンドラインで実行されたときにのみ実行されることを保証します。

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

コマンドラインにPHPを記述するとき、環境の制御は、私たちが持っているWebサーバーほどではありません。 Preflicht()は、ローカルPHP環境を呼び出します。最小要件は次のとおりです。

    php 7.4
  • posix拡張子
  • mbstring拡張
注:

マクラメはPHP 7.4および8.0で実行されていますが、PHPが8.1で変更されたため、シンボル文字列は出力で正しく整列しない場合があります。

これにより、スクリプトがきれいに終了し、0の成功コードを返します。さらに、実行中に作成された一時ファイルはすべて削除されます。 PHPのDie()の代わりにMacrameのexit()関数を使用するのが最善です
<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>
hello world

を実行します

基本的な「hello world」スクリプトを書いた後、実行を許可してコマンドラインで実行するためにその権限を設定できます。

パラメーターを読み取ります

MacRameは、分析およびコマンドラインパラメーターを読み取るための一連のツールを提供します。いくつかの簡単なことから始めましょう。次のコマンドを使用してスクリプトを呼び出すときにバージョン番号を取得します。
<code class="language-php">#!/usr/bin/env php</code>
この状況では、これらのパラメーターが存在するかどうかを確認する必要があります。

このメソッドは、すべてのスクリプトを含むオブジェクトを返すことにより、この目的を達成できます。パラメーターが存在するかどうかをテストするために、以下に示すように存在()メソッドを使用できます。

存在する()メソッドはブールに戻ります。
<code class="language-php">$macrame = new Macrame("示例 Macrame 脚本");</code>

<code class="language-php">if ($macrame->running())</code>
コマンドラインパラメーターを使用して、変数の値を割り当てることもできます。たとえば、ユーザー名の値を設定するには、ユーザーが次のようにスクリプトを呼び出すことができることを願っています。

スクリプトでこのパラメーターの値を取得するには、以下に示すように、args()によって提供された最初の()メソッドを使用できます。
名前が示すように、最初の()メソッドはパラメーターの

>最初の

値を返します。このようなスクリプトを呼び出す場合:

最初に()は「FirstUser」値を返します。最後の値が必要な場合は、last()を呼び出すことができます。アレイとして
<code class="language-php">$macrame->preflight();</code>
すべて

が必要な場合は、all()を使用します。

<code class="language-php">$macrame->exit();</code>
これらすべてをまとめると、私たちのスクリプトは今このように見えます:

コマンドラインパラメーターの処理の完全なメソッドリストは、Macrameパラメータードキュメントで紹介されています。

<code class="language-bash">chmod 755 ./examplescript.php
./examplescript.php</code>
ダイナミックメニューを作成します

また、ユーザーがインタラクティブな方法でスクリプトを使用できるようにすることを望んでいます。コマンドラインのパラメーターを渡さない場合は、データの入力を促します。マストドンの例については、メニューを使用します。 マクラメメニューは動的です。

メニューをユーザーに表示し、選択した値の値を返す関数を書きましょう。

<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>
メニューオプションとして文字列配列と、メニュー()&gt;のオプションのメニュータイトルテキストを提供し、メニューはユーザーに自動的に表示されます。ユーザーの選択は文字列として返されます。

メニュー関数を取得した後、Mastodonインスタンスを取得する方法を変更できます。コマンドラインパラメーターから読み取ることを試みます。

メニュースタイルの補足説明
<code class="language-php">#!/usr/bin/env php</code>

デフォルトでは、MacRameは端末のデフォルトスタイルと色を使用してメニューを表示し、表示された表示を強調表示するプロジェクトは表示されるように設定されています。必要に応じて、チェーンにいくつかの追加機能を追加することにより、この設定を変更できます。たとえば、表示されている厚い赤いテキストとして表示されているアイテムを強調表示したい場合は、これを書くことができます。

メニューのドキュメントページカスタムメニューの色、スタイル、アラインメント方法のカスタマイズに使用できるすべてのメソッドの完全な概要。

<code class="language-php">$macrame = new Macrame("示例 Macrame 脚本");</code>
ユーザーの行を読んで、

を入力してください

次に、インタラクティブな入力も受け入れるように、ユーザー名を取得する方法を変更します。この場合、input() - &gt;を使用して、ユーザー入力テキスト文字列を読み取ります。以下は関数です:

この関数の最後の行は、ユーザーに問い合わせる場所です。 readline()メソッドは、オプションの$プロンプトパラメーターを受け入れます。返品値は、ユーザーが入力した文字列です。

入力検証の補足的説明

<code class="language-php">if ($macrame->running())</code>
ユーザーは間違いを犯します。これが、入力検証が重要な理由です。

マクラメには、入力を検証するための多くのプリセットメソッドが付属しています。確認装置が故障した場合、システムはユーザーに再び入力するように任意の数を追加できます。 input() - &gt; readline()関数は、すべての検証が渡された後にのみ値を返します。

例を見てみましょう:

ここでは、2つの検証テストを適用します。テキストは4つ以上の文字でなければならず、「@」シンボルを含めることはできません。これら2つの検証方法の場合、2番目のパラメーターは、検証が失敗した場合にユーザーに表示するエラーメッセージです。

Macrame入力ドキュメントページには、すべての建設的検証関数の完全なリストが提供されます。独自のカスタム検証デバイスを作成したい場合は、紹介されています。

<code class="language-php">$macrame->preflight();</code>
「ポイントのようなバックディスプレイ」の出力はどうですか?

ユーザーがパスワードなどの機密データを入力した場合、スパイマンに見られないように端末にキーを表示したくない場合があります。

この問題を解決するために、MacrameはreadPassword()と呼ばれるreadline()の「ポイントシェイプバックディスプレイ」バージョンを提供します。

readpassword()各ボタンの読み取りは、星番号の形で表示されます。

テキストスタイルの設定

ユーザーテキストの行の読み方の例では、迅速なテキストスタイルを設定するために使用される多数のコードが見られました。詳細に勉強しましょう。

MacRameを使用すると、ANSIコードを使用して端末テキスト出力スタイルを設定できます。これにより、厚いボディと斜めのボディのスタイルと色をテキストに適用できます。

この操作は、2つの方法でスクリプトでこの操作を実行できます。 style()やcolor()(またはcolor())などのいくつかの方法があります。または、基本的なテキストマークシステムを使用できます。

まずメソッドを見てみましょう。

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

ここでは、MacrameのText()メソッドを使用して「テキスト」オブジェクトを作成し、スタイルと色を適用し、最後にget()を使用して文字列として返します。

スタイルと色の方法は、文字列内のすべてのテキストに適用されることに注意してください。スタイルとカラーテキストと純粋なテキストを混ぜたい場合は、多くのサブストリングを作成し、それらを一緒に接続する必要があります。特に多数のテキストを扱う場合、これは非常に厄介かもしれません。

または、MacRameのマークアップシステムを使用して、テキストスタイルの設定を簡素化できます。これは例です:

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

マークの間のテキストは(もちろん)厚くなります。ドキュメントには、すべてのマークの完全なリストがリストされています。 注意すべきことの1つは、マークが以前のすべてのマークをオフにすることです。これは、ANSI転送コードの動作によるものです。

これは、ネストされたマークが予想されるように機能しないことを意味します。たとえば、この例では、最初のマークは閉じられます

および

マーク:

現在のスクリプト
<code class="language-php">#!/usr/bin/env php</code>

これまでのところ、例のスクリプトを以下に示します。

次の

とは何ですか
<code class="language-php">$macrame = new Macrame("示例 Macrame 脚本");</code>
これまでのところ、コマンドラインの読み取りラインパラメーターを導入し、メニューとテキストからユーザー入力を取得し、出力の基本的なテキストスタイルを作成しました。次の記事では、次のように紹介します

アニメーションローダーがユーザーに表示されたときにバックグラウンドで関数を実行

ファイルを安全に書き込みます
    良い形式の出力としての配列データの出力
  • ペグリングディスプレイLONG出力
  • 基本的な通知レベル出力

以上がPHP:MacRameを使用してコマンドラインアプリケーションを作成します。 PT 1の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。