ホームページ >バックエンド開発 >PHPチュートリアル >PHP:MacRameを使用してコマンドラインアプリケーションを作成します。 PT 1
PHPは、多くの注目を集めたスクリプト言語ではありませんが、これは残念です。なぜなら、PHPにはターミナルアプリケーションを書く理想的な選択となる多くの理想があるからです。
この一連の記事では、マクラメライブラリを使用してインタラクティブコマンドラインスクリプトを作成する方法を紹介します。スクリプトは徐々にMastodonユーザーフォロワーのリストを最初から最後まで取得し、次のトピックをカバーします。スタイル、およびアニメーションローダーがユーザーに表示されるときにバックグラウンドで関数を実行します。マクラメの詳細については、ドキュメントサイトをご覧ください。
アイテムの例
マクラメ
をインストールします
空白のスクリプトを作成しますダイナミックメニューを作成します
<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および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インスタンスを取得する方法を変更できます。コマンドラインパラメーターから読み取ることを試みます。
メニューのドキュメントページカスタムメニューの色、スタイル、アラインメント方法のカスタマイズに使用できるすべてのメソッドの完全な概要。 を入力してください
入力検証の補足的説明
ここでは、2つの検証テストを適用します。テキストは4つ以上の文字でなければならず、「@」シンボルを含めることはできません。これら2つの検証方法の場合、2番目のパラメーターは、検証が失敗した場合にユーザーに表示するエラーメッセージです。 Macrame入力ドキュメントページには、すべての建設的検証関数の完全なリストが提供されます。独自のカスタム検証デバイスを作成したい場合は、紹介されています。
この問題を解決するために、MacrameはreadPassword()と呼ばれるreadline()の「ポイントシェイプバックディスプレイ」バージョンを提供します。 ユーザーテキストの行の読み方の例では、迅速なテキストスタイルを設定するために使用される多数のコードが見られました。詳細に勉強しましょう。 MacRameを使用すると、ANSIコードを使用して端末テキスト出力スタイルを設定できます。これにより、厚いボディと斜めのボディのスタイルと色をテキストに適用できます。 この操作は、2つの方法でスクリプトでこの操作を実行できます。 style()やcolor()(またはcolor())などのいくつかの方法があります。または、基本的なテキストマークシステムを使用できます。 まずメソッドを見てみましょう。 ここでは、MacrameのText()メソッドを使用して「テキスト」オブジェクトを作成し、スタイルと色を適用し、最後にget()を使用して文字列として返します。 スタイルと色の方法は、文字列内のすべてのテキストに適用されることに注意してください。スタイルとカラーテキストと純粋なテキストを混ぜたい場合は、多くのサブストリングを作成し、それらを一緒に接続する必要があります。特に多数のテキストを扱う場合、これは非常に厄介かもしれません。 または、MacRameのマークアップシステムを使用して、テキストスタイルの設定を簡素化できます。これは例です:
マークの間のテキストは(もちろん)厚くなります。ドキュメントには、すべてのマークの完全なリストがリストされています。 これは、ネストされたマークが予想されるように機能しないことを意味します。たとえば、この例では、最初のマークは閉じられます マーク: 次の
<code class="language-php">#!/usr/bin/env php</code>
デフォルトでは、MacRameは端末のデフォルトスタイルと色を使用してメニューを表示し、表示された表示を強調表示するプロジェクトは表示されるように設定されています。必要に応じて、チェーンにいくつかの追加機能を追加することにより、この設定を変更できます。たとえば、表示されている厚い赤いテキストとして表示されているアイテムを強調表示したい場合は、これを書くことができます。
<code class="language-php">$macrame = new Macrame("示例 Macrame 脚本");</code>
ユーザーの行を読んで、
この関数の最後の行は、ユーザーに問い合わせる場所です。 readline()メソッドは、オプションの$プロンプトパラメーターを受け入れます。返品値は、ユーザーが入力した文字列です。
<code class="language-php">if ($macrame->running())</code>
ユーザーは間違いを犯します。これが、入力検証が重要な理由です。
例を見てみましょう:<code class="language-php">$macrame->preflight();</code>
「ポイントのようなバックディスプレイ」の出力はどうですか?
readpassword()各ボタンの読み取りは、星番号の形で表示されます。
テキストスタイルの設定
<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>
と<code class="language-php">#!/usr/bin/env php</code>
これまでのところ、例のスクリプトを以下に示します。
<code class="language-php">$macrame = new Macrame("示例 Macrame 脚本");</code>
これまでのところ、コマンドラインの読み取りラインパラメーターを導入し、メニューとテキストからユーザー入力を取得し、出力の基本的なテキストスタイルを作成しました。次の記事では、次のように紹介します
アニメーションローダーがユーザーに表示されたときにバックグラウンドで関数を実行
良い形式の出力としての配列データの出力
以上がPHP:MacRameを使用してコマンドラインアプリケーションを作成します。 PT 1の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。