Consoleコンポーネント:CLIコマンド
Symfony ConsoleのCommandクラスで対話型CLIツールを構築します
「Consoleコンポーネント:CLIコマンド」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。
Symfony Consoleコンポーネントとは
Symfony Consoleを使うと、オプション、引数、プログレスバー、色付き出力に対応した、構造化されテスト可能なPHP製CLIアプリケーションを構築できます。
インストール
コンポーネントをインストールします。
$ composer require symfony/consoleコマンドの作成
Commandを継承し、configure()とexecute()をオーバーライドします。
<?php
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class GreetCommand extends Command
{
protected static string $defaultName = "app:greet";
protected function configure(): void
{
$this->setDescription("Greet a user")
->addArgument("name", \InputArgument::REQUIRED, "Name to greet")
->addOption("uppercase", "u", \InputOption::VALUE_NONE, "Uppercase output");
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$name = $input->getArgument("name");
if ($input->getOption("uppercase")) $name = strtoupper($name);
$output->writeln("Hello, $name!");
return Command::SUCCESS;
}
}アプリケーションの設定
Applicationにコマンドを登録して実行します。
<?php
use Symfony\Component\Console\Application;
$app = new Application("MyApp", "1.0.0");
$app->add(new GreetCommand());
$app->run();引数とオプション
引数は位置によって指定します(必須または任意)。オプションは名前付きフラグです(--name=valueまたは-n value)。
<?php
$this->addArgument("file", InputArgument::REQUIRED)
->addArgument("output", InputArgument::OPTIONAL, "Output file", "out.txt")
->addOption("verbose", "v", InputOption::VALUE_NONE, "Verbose output")
->addOption("format", "f", InputOption::VALUE_REQUIRED, "Output format", "json");出力ヘルパー
ヘルパーメソッドを使って出力を整形します。
<?php
$output->writeln("<info>Success!</info>");
$output->writeln("<error>Error occurred</error>");
$output->writeln("<comment>Processing...</comment>");ProgressBar
時間のかかるタスクの進行状況をプログレスバーで表示します。
<?php
use Symfony\Component\Console\Helper\ProgressBar;
$bar = new ProgressBar($output, count($items));
$bar->start();
foreach ($items as $item) {
processItem($item);
$bar->advance();
}
$bar->finish();Tableヘルパー
ターミナルに表形式のデータを表示します。
<?php
use Symfony\Component\Console\Helper\Table;
$table = new Table($output);
$table->setHeaders(["ID", "Name", "Email"])
->setRows($userData)
->render();Questionヘルパー
対話形式でユーザーに入力を求めます。
<?php
use Symfony\Component\Console\Question\Question;
$helper = $this->getHelper("question");
$question = new Question("Enter database password: ");
$question->setHidden(true);
$password = $helper->ask($input, $output, $question);終了コード
execute()からCommand::SUCCESS(0)、Command::FAILURE(1)、またはCommand::INVALID(2)を返します。CIシステムはこれらのコードを使用します。
Laravelでの利用
Laravel ArtisanコマンドはIlluminate\Console\Commandを継承し、configure()の代わりに$signatureと$descriptionプロパティを使用します。
まとめ
Commandを継承してコマンドを作成します。configure()で引数とオプションを定義します。execute()で処理を実行します。プログレスバー、テーブル、ユーザープロンプトにはヘルパーを使用します。
理解度チェック
成功したコマンドがexecute()から返すべき整数は何ですか?
よくある質問
「Consoleコンポーネント:CLIコマンド」レッスンは無料ですか?
はい。「Consoleコンポーネント:CLIコマンド」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。
「Consoleコンポーネント:CLIコマンド」で何を学びますか?
Symfony ConsoleのCommandクラスで対話型CLIツールを構築します ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
PHP Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「Consoleコンポーネント:CLIコマンド」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPHP Academyレッスンでコードを書いて実行できますか?
はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- HttpFoundation:リクエストとレスポンス
- DependencyInjectionコンテナ
- EventDispatcher:疎結合なイベント
- Consoleコンポーネント:CLIコマンド