0Pricing
PHP Academy · レッスン

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. HttpFoundation:リクエストとレスポンス
  2. DependencyInjectionコンテナ
  3. EventDispatcher:疎結合なイベント
  4. Consoleコンポーネント:CLIコマンド
← PHP Academyに戻る