window.pipedriveLeadboosterConfig={です。 ベース:'leadbooster-chat.pipedrive.com'、 companyId:11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2、 } ;(function () { var w = window もし (w.LeadBooster) {なら console.warn('LeadBooster already exists') } else { w.LeadBooster = { {. q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: 関数 (n) { { this.q.push({ t: 'o', n: n, h: h }) this.q.push({ t: 't', n: n }) }, } } })() PHPの開発symfony コンソールコンポーネント - ヒントとコツ - The Codest
The Codest
  • 会社概要
  • サービス
    • ソフトウェア開発
      • フロントエンド開発
      • バックエンド開発
    • Staff Augmentation
      • フロントエンド開発者
      • バックエンド開発者
      • データエンジニア
      • クラウドエンジニア
      • QAエンジニア
      • その他
    • アドバイザリー
      • 監査&コンサルティング
  • 産業
    • フィンテック&バンキング
    • E-commerce
    • アドテック
    • ヘルステック
    • 製造業
    • 物流
    • 自動車
    • アイオーティー
  • 価値
    • CEO
    • CTO
    • デリバリー・マネージャー
  • チーム
  • Case Studies
  • ノウハウ
    • ブログ
    • ミートアップ
    • ウェビナー
    • リソース
採用情報 連絡先
  • 会社概要
  • サービス
    • ソフトウェア開発
      • フロントエンド開発
      • バックエンド開発
    • Staff Augmentation
      • フロントエンド開発者
      • バックエンド開発者
      • データエンジニア
      • クラウドエンジニア
      • QAエンジニア
      • その他
    • アドバイザリー
      • 監査&コンサルティング
  • 価値
    • CEO
    • CTO
    • デリバリー・マネージャー
  • チーム
  • Case Studies
  • ノウハウ
    • ブログ
    • ミートアップ
    • ウェビナー
    • リソース
採用情報 連絡先
戻る矢印 戻る
2022-04-14
ソフトウェア開発

PHPの開発symfony コンソールコンポーネント - ヒントとコツ

The Codest

セバスチャン・ルザック

PHP ユニットリーダー

この記事は、symfony コンソール開発に関するもっとも便利で検索しやすいヒントとトリックをお見せする目的で作成されました。

もしあなたが PHP 開発者 あなたの PHP ソフトウェア開発 を次のレベルに引き上げたいあなたのための記事です。本題に入ろう。

はじめに

よく耳にする言葉だ:
​

PHPはウェブページの作成にのみ使用される

イメージ

​
というのも、現在ではこのようなことはあり得ないからだ。 PHP開発 はさまざまなビジネス分野で使われているが、一見するとそれほど些細なことではないことが多い。

どちらも PHP 言語とその環境はHTTP通信を完璧にサポートしており、CLI環境の使用と合わせて、ウェブボットやウェブクローラ、外部環境のデータを同期するツールを素早く作成することができる。
​
これを裏付ける統計として、コンソールのコンポーネントが以下のようになる。 symfonyフレームワークコマンドラインに簡単にアクセスでき、最も使用され、ダウンロードされたTOP5に入っている。 シンフォニー 史上最高のパッケージ

​
イメージ

​

​
この時点で、私たちはすべての人が知っておくべきいくつかのトリックを紹介したいと思う。 PHP開発者 書くときに知っておくべきこと コード で PHP CLIで動作することになっている。
​

カスタム・データ・ソースによるインタラクティブな選択表

​
イメージ
​

エントリーを選択できるテーブル・レンダリングは、以下の方法で簡単に実現できる。 シンフォニー 命令だ:

// src/App/Command/TestCommand.php

    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Interactive selection table example");

        $table = $io->createTable();
        $table->setHeaderTitle("Interactive selection table example");
        $table->setRows(iterator_to_array($this->tagsTableRows()));
        $table->render();
        $io->newLine();

        return Command::SUCCESS;
    } 

​
上記の例では PHP発電機 将来のスケーラビリティに役立ちます。上記の例の簡単なデータジェネレーター:

    protected function tagsTableRows():ジェネレータ
    {
        $apiTagsResponse = $this->someInjectedService->getTags();
        foreach ($apiTagsResponse as $apiTagResponse) { $apiTagResponse
            yield [ $apiTagResponse->getName(), $apiTagResponse->getId() ];
        }
    }

最終結果は、CLIでレンダリングされた表である。
​
イメージ
​

インタラクティブにするためには、QuestionHelperを使う必要があります。 シンフォニースタイル を出力した。

  (...)
    $choice = 新しいChoiceQuestion(
        question: 'どの選択肢を選びますか?
        choices: array_reduce(
            配列:$rows、
            callback: function($carry, $item) { { $carry[] = $item.
                $carry[] = $item[0];

                return $carry;
            }
        )
    );
    $answer = $io->askQuestion($choice);
   (...)

その結果、同じソースからテーブル表示のあるインタラクティブな選択フィールドを得ることができた。
​

機密性の高いユーザーデータには常に隠しプロンプトを使用する

​
イメージ
​

機密データを提供する一方でプロンプトを隠すことは一般的な慣行であり、次のような方法で簡単に実現できる。 シンフォニー コンソール。
の組み込みラッパーを使用できます。 シンフォニースタイル クラスは、次のような例がある:

  (...)
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Asking user for sensitive data");
        $io->askHidden(
            question:"APIキーをここに入力してください"、
            validator: function($answer) { return (42 == strlen($answer)) ??$answer; }.
        );

        return Command::SUCCESS;
    }

プログレスバーのスタイル

​
イメージ
​

進捗状況をユーザーに伝えるために、プログレス・バーを使うことができる。 シンフォニー Consoleはユーザーに進捗を表示する素晴らしい方法を持っていますが、常に進捗出力を正しくスタイルすることを忘れないでください。様々な部分とそのレンダリング方法は フォーマッタ.プログレスバーの書式は、異なるプレースホルダーの文字列だけです。利用可能なプレースホルダは以下の通りです: 現在, マックス, バー, パーセント, 経過, 残り, 推定, メモリー そして メッセージ.下の例を参考にいじってみてください。

(...)
 protected function execute(InputInterface $input, OutputInterface $output): int
 {
 $io = new SymfonyStyle($input, $output);
 $io->title("Styled progress bar example");

 $progressBar = new ProgressBar($io, 10000);
 $progressBar->setFormat('%current%/%max% [r%] %percent:3s%%)
 %elapsed:6s%/%estimated:-6s% %memory:6s%');
 $progressBar->start();
 for ($i = 0; $i < 10000; $i++) { ($i = 0; $i advance();
 usleep(420);
 }

 $progressBar->finish();
 $io->newLine();

 return Command::SUCCESS;
 }

端末が表示できるものであれば、フォーマッターとしてほとんど何でも使うことができる。公式 シンフォニー ドキュメンテーション
​

コンソールコマンドへの提案

​
イメージ
​

私たちは開発生活の中で、コンソールのサジェストやオートコンプリート機能などに慣れています。もしコンソール・アプリケーションを作成するのであれば、ユーザーが低レベルのCLIソリューションの使い方に戸惑わないように、それを追加することを検討すべきです。 PHP symfony コンソールは箱から出してすぐに 完了入力 クラスである。

(...)
    public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void
    {
        if ($input->mustSuggestArgumentValuesFor(argumentName: 'someArgument')){
            $suggestions->suggestValues(['someSuggestion', 'otherSuggestion']);
        }
    }

好きな場所で印刷

​
Symfony 5.1 は、CLIアプリケーションでカーソル位置を処理する新しい方法を導入した。それ以来、便利な カーソル クラスである:

(...)
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Cursor example");
​
        $cursor = new Cursor($io);
        $cursor->clearScreen();
        for ($x = 0; $x <= 10; $x++) {
            for ($y = 0; $y <= 10; $y++) {
                $cursor->moveToPosition($x, $y);
​
                if ($y === $x) {
                    $io->write(".");
                }
            }
        }
        $io->write("Hello, World!");
        $io->newLine();
​
        return Command::SUCCESS;
    }

イメージ
この短いトリックリストは氷山の一角にすぎない。その可能性は symfony コンソール Psalm』、『PHPStan』、『Composer』など、次のようなプロジェクトが数多くある。 PHP 何百万人もの人々が利用している。 PHP開発者 世界各地で。

協力バナー

関連記事

ソフトウェア開発

PHPを使うべきでない2つの理由

PHPの開発者として、私はPHP4、PHP5での最初の(オプションの!)GC実装、そしてPHP7と...の出現のハイプの日々をまだ覚えている。

The Codest
セバスチャン・ルザック PHP ユニットリーダー
ソフトウェア開発

内部開発者と外部開発者の雇用

社内採用か社外採用か?それは究極のジレンマだ!以下の記事で、outsourcingと社内チーム構築のメリットをご確認ください。

The Codest
グジェゴシュ・ロズムス Javaユニットリーダー

ナレッジベースを購読して、IT部門の専門知識を常に最新の状態に保ちましょう。

    会社概要

    The Codest - ポーランドに技術拠点を持つ国際的なソフトウェア開発会社。

    イギリス - 本社

    • オフィス 303B, 182-184 High Street North E6 2JA
      イギリス、ロンドン

    ポーランド - ローカル・テック・ハブ

    • ファブリチュナ・オフィスパーク、アレハ
      ポコジュ18、31-564クラクフ
    • ブレイン・エンバシー, コンストルクトースカ
      11, 02-673 Warsaw, Poland

      The Codest

    • ホーム
    • 会社概要
    • サービス
    • Case Studies
    • ノウハウ
    • 採用情報
    • 辞書

      サービス

    • アドバイザリー
    • ソフトウェア開発
    • バックエンド開発
    • フロントエンド開発
    • Staff Augmentation
    • バックエンド開発者
    • クラウドエンジニア
    • データエンジニア
    • その他
    • QAエンジニア

      リソース

    • 外部ソフトウェア開発パートナーとの協力に関する事実と神話
    • 米国から欧州へ:アメリカの新興企業がヨーロッパへの移転を決断する理由
    • テックオフショア開発ハブの比較:テックオフショア ヨーロッパ(ポーランド)、ASEAN(フィリピン)、ユーラシア(トルコ)
    • CTOとCIOの課題は?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • ウェブサイト利用規約

    著作権 © 2025 by The Codest。無断複写・転載を禁じます。

    jaJapanese
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek jaJapanese