ホームページ > バックエンド開発 > PHPチュートリアル > 再導入Symfony Console -UninitiatedのCLI PHP!

再導入Symfony Console -UninitiatedのCLI PHP!

Christopher Nolan
リリース: 2025-02-10 14:06:15
オリジナル
549 人が閲覧しました

Re-Introducing Symfony Console - CLI PHP for the Uninitiated!

コアポイント

  • Symfony Consoleは、データの移行、インポート、CRONジョブの作成などの繰り返しタスクに役立つコマンドラインツールを作成するための簡単なフレームワークを提供するスタンドアロンパッケージです。
  • 新しいコマンドを作成するには、ファイルを実行可能にする必要があります。これは、プロジェクトルートディレクトリにコンソールファイルを作成し、ファイルが実行可能であることを確認し、コンソールアプリケーションを定義することで実行できます。
  • SymfonyのCommandTesterクラスを使用してコマンドをテストできます。コマンドは、コマンドラインなしでコマンドをテストするための特別な入力クラスと出力クラスを提供します。
  • Symfonyコンソールは、Composer(PHPの依存関係管理ツール)を使用してインストールされています。コマンドラインコマンドを作成する簡単なAPIを提供し、カラーディスプレイ、進行状況バー、テーブル、および出力のその他のインタラクティブ機能をサポートします。

この記事は2017年5月24日に更新され、この重要なモダンツールのより包括的な紹介を提供します。


「コンソールコンポーネントは、美しくテスト可能なコマンドラインインターフェイスを作成するプロセスを簡素化します これは、Symfony Consoleコンポーネントツールページにアクセスしたときに見られる歓迎メッセージです。

ソフトウェア開発者として、コマンドラインツールを使用する必要があることがよくあります。これらのツールは、何らかの繰り返しタスク(データの移行、輸入の実行、Cronジョブの作成など)を実行する必要がある場合に役立ちます。

Re-Introducing Symfony Console - CLI PHP for the Uninitiated! Symfony Consoleコンポーネントツールは、独自のコマンドラインツールを作成するための簡単なフレームワークを提供します。

インストール

作曲家に関する重要な情報はここに含まれています。

新しいコマンドを作成します
composer require symfony/console
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

新しいコマンドを作成するには、ファイルが実行可能であることを確認する必要があります。これを行うには、プロジェクトルートディレクトリにコンソールファイルを作成しましょう。このファイルは、コマンドマネージャーとして機能します。

さあ、ファイルが実行可能であることを確認しましょう。

次に、ファイルの先頭にシバンがあることを確認しましょう。 Shebangは、スクリプトの先頭に表示される一連の文字(親指マークに続く感嘆符が続く)です。 Shebangが存在すると、exec()は、Shebangが実行された後に指定された実行可能ファイルに変更されます。この例では、PHPスクリプトとして実行されます。

の後、コンソールアプリケーションを定義しましょう。コマンドマネージャーの最初のイテレーションは次のようになります:
touch console
ログイン後にコピー
ログイン後にコピー

よく見てみましょう。まず、すべての依存関係を自動的にロードし、コンソールコンポーネントからアプリケーションパッケージをインポートします。その後、アプリケーションの新しいインスタンスを作成して実行します。
chmod 755 console
ログイン後にコピー
ログイン後にコピー

./consoleを使用してスクリプトを実行する場合、次のヘルプメッセージを取得する必要があります。

Re-Introducing Symfony Console - CLI PHP for the Uninitiated!

これは、コマンドをまだ登録していないため、基本的なフレームワークを構築しただけです。

スクリプトを作成し、新しく作成したコマンドマネージャーに登録しましょう。

この特定の例では、2つの単純なコマンドを実装します。1つは、ハッシュが与えられた文字列に属していることを確認するために、ハッシュする文字列ともう1つは実装します。

次のコンテンツを使用して、hash.phpクラスの

フォルダーを配置します。

/srcコマンドを作成する時が来ました。 hashcommand.phpという新しいPHPファイルを作成しましょう。

このクラスは、Symfonyのコマンドクラスを拡張し、構成と実行のメソッドを実装します。これらの方法は、コマンドがコマンドにどのように見えるか、振る舞うかを伝えるため、私たちのコマンドにとって重要です。
composer require symfony/console
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

で完了したコマンドは次のとおりです

構成セクションでは、setNameメソッドはコマンドを呼び出す方法であり、setDescriptionはコマンドの説明であり、addArgumentはコマンドがパスワードという名前のパラメーターを受け入れることを宣言するステートメントであり、必要です。

実行セクションでは、getArgument関数を介してパラメーターにアクセスし、ハッシュクラスを使用してハッシュします。最後に、outputinterfaceのwriteelnメソッドを使用して、結果を画面に印刷します。

touch console
ログイン後にコピー
ログイン後にコピー
このようにコマンドを実行すると、何も起こらないことがわかります。これは、私たちがまだ非常に重要なステップを逃しているからです。コマンドをコンソールに登録する必要があります。

コンソールにコマンドを登録した後、実行しましょう。

コマンドを再度実行すると、新しいコマンドを登録したことがわかります。

chmod 755 console
ログイン後にコピー
ログイン後にコピー

./console実行しましょう:

Re-Introducing Symfony Console - CLI PHP for the Uninitiated! 最終結果が表示されます:

#!/usr/bin/env php

<?php require_once __DIR__ . '/vendor/autoload.php';

use Symfony\Component\Console\Application;

$app = new Application();
$app->run();
ログイン後にコピー

hashは、php hash()メソッドをSitePoint文字列に適用した結果です。

ハッシュ確認関数については、同じ方法を使用しますが、1つではなく2つのパラメーターがあります。 1つは確認する必要がある文字列であり、もう1つは検証したいハッシュ値です。 Re-Introducing Symfony Console - CLI PHP for the Uninitiated!

HashCommandファイルのすぐ横にある新しいコマンドファイルを作成します。 cummentcommandと呼びましょう。

次に、コンソールにコマンドを登録します。

<?php
namespace Hash;

class Hash {

    /**
     * 接收一个字符串密码并对其进行哈希处理。
     *
     * @param string $password
     * @return string $hash
     */
    public static function hash($password) {
        return password_hash($password, PASSWORD_DEFAULT);
    }

    /**
     * 验证哈希是否与给定的密码相对应
     *
     * @param string $password
     * @param string $hash
     * @return boolean 如果哈希是从密码生成的
     */
    public static function checkHash($string, $hash) {
        if (password_verify($string, $hash)) {
            return true;
        }
        return false;
    }

}
ログイン後にコピー
テスト

テストに関しては、Symfonyはいくつかの便利なツールを提供します。最も便利なものは、コマンドテスタークラスです。これは、コマンドラインなしでコマンドをテストするための特別な入力クラスと出力クラスを提供するためです。

CommandTesterクラスを使用して、Hash:Hashコマンドのテストを実装しましょう。

最初に、私たちと同じレベルで/srcフォルダーを作成しましょう。 /tests

次に、テストクラスを作成して、Hashcommandtest.php:

に名前を付けてみましょう。

composer require symfony/console
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
アプリケーションクラスを使用してコマンドを最初にロードします。次に、新しいCommandTesterをインスタンス化します。 CommandTesterを使用して、コマンドを呼び出す方法を構成できます。最後のステップは、getDisplay()メソッドを使用して、実行結果と予想される結果を比較することです。

コマンドラインに見られるように、

getDisplay()メソッドは、コマンド実行の結果を保存します。

結論

Symfony Consoleコンポーネントを使用して2つの異なるコマンドを作成しました。また、これらのコマンドをテストする良い方法も見られます。コンポーネントのさまざまなオプションと機能を見て、以下のコメントセクションで実験に関するフィードバックを提供することをお勧めします。

SymfonyコンソールでSypePointのより高度なチュートリアルを見たいですか?教えてください!

この記事で書いたすべてのコードは、githubで見つけることができます。

Symfony Console FAQ

Symfonyコンソールをインストールする方法は?

Symfonyコンソールは、Composer(PHPの依存管理ツール)を使用してインストールできるSymfonyフレームワークのコンポーネントです。 Symfony Consoleをインストールするには、端末で次のコマンドを実行する必要があります:

。このコマンドは、Symfony Consoleコンポーネントをプロジェクトにダウンロードしてインストールします。 composer require symfony/console

Symfony Consoleの主な機能は何ですか?

Symfonyコンソールは、コマンドラインコマンドを作成するための簡単なAPIを提供します。これらのコマンドは、CRONジョブ、移行、輸入、またはコマンドラインを介して実行できるその他のタスクタイプに使用できます。また、カラーディスプレイ、進行状況バー、テーブル、および出力のその他のインタラクティブな機能もサポートしています。

Symfonyコンソールで新しいコマンドを作成する方法は?

新しいコマンドを作成するには、SymfonyComponentConsoleCommandクラスを拡張する新しいクラスを作成する必要があります。このクラスでは、Configureメソッドのコマンドの名前、説明、パラメーター、およびオプションを定義します。実行メソッドには、コマンドのロジックが含まれます。

コマンドを実行するには、コマンドを実行するには、

スクリプトに続いてコマンドの名前を使用する必要があります。たとえば、

というコマンドがある場合、次のコマンドで実行できます:

bin/console app:my-commandデータベースの移行にSymfonyコンソールを使用する方法は? bin/console app:my-command

Symfonyコンソールは、データベースの移行を管理するために、Doctrine(Symfonyのデータベース抽象化レイヤー)と組み合わせて使用​​できます。データベースを移行するために必要なSQLクエリを実行する新しいコマンドを作成できます。

Symfonyコンソールのコマンドパラメーターとオプションを処理する方法は?

コマンドパラメーターとオプションは、コマンドクラスの構成メソッドで定義できます。 getArgumentおよびgetoptionメソッドを使用して、実行方法のこれらのパラメーターとオプションの値を取得できます。

Symfonyコンソールに出力を表示する方法は?

Symfony Consoleは、出力を表示するいくつかの方法を提供します。 writeelnメソッドを使用してテキストの行を表示し、書き込みメソッドを使用してテキストを表示し(最後に行の破損はありません)、テーブルメソッドを使用してテーブルを表示できます。

Symfonyコンソールのエラーを処理する方法は?

エラーは、例外をスローすることで処理できます。 Symfony Consoleはこれらの例外をキャッチし、エラーメッセージを表示します。 Exitメソッドを使用して、コマンドの実行を停止し、Exitコードを返すこともできます。

Symfonyコンソールでコマンドをテストする方法は?

Symfony Consoleは、コマンドをテストするために使用できるCommandTesterクラスを提供します。このクラスを使用して、特定のパラメーターとオプションを使用してコマンドを実行し、出力と終了コードをアサートできます。

SymfonyプロジェクトでSymfony Consoleを使用する方法は?

symfonyプロジェクトでは、bin/consoleスクリプトを使用してコマンドを実行できます。また、src/CommandディレクトリにSymfonyComponentConsoleCommandクラスを拡張する新しいクラスを作成することにより、独自のコマンドを作成することもできます。

以上が再導入Symfony Console -UninitiatedのCLI PHP!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート