私は非常に単純な Symfony コンソール アプリケーションを開発しています。1 つの引数を持つ 1 つのコマンドと、いくつかのオプションがあります。
このガイドに従って、Application
クラスの拡張機能を作成しました。
これはアプリの通常の使用法であり、正常に動作します。
php application <argument>
これも問題なく動作します(オプション付きの引数):
php application.php <argument> --some-option
誰かがphp application.php
引数やオプションなしで実行した場合、ユーザーが実行したかのように実行したいphp application.php --help
.
私は実用的な解決策を持っていますが、それは最適ではなく、おそらく少しもろいです。私の拡張Application
クラスでは、run()
次のようにメソッドをオーバーライドしました。
/**
* Override parent method so that --help options is used when app is called with no arguments or options
*
* @param InputInterface|null $input
* @param OutputInterface|null $output
* @return int
* @throws \Exception
*/
public function run(InputInterface $input = null, OutputInterface $output = null)
{
if ($input === null) {
if (count($_SERVER["argv"]) <= 1) {
$args = array_merge($_SERVER["argv"], ["--help"]);
$input = new ArgvInput($args);
}
}
return parent::run($input, $output);
}
デフォルトでApplication::run()
は、 は nullInputInterface
で呼び出されるため、ここでは、引数の生の値を確認し、ヘルプ オプションを強制的に追加して親メソッドに渡すことができると考えました。
これを達成するためのより良い方法はありますか?