Building a single Command Application ¶
When building a command line tool, you may not need to provide several commands. In such a case, having to pass the command name each time is tedious. Fortunately, it is possible to remove this need by declaring a single command application:
コマンド ライン ツールを作成する場合、複数のコマンドを指定する必要がない場合があります。そのような場合、毎回コマンド名を渡すのは面倒です。幸いなことに、単一のコマンド アプリケーションを宣言することで、この必要性を取り除くことができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#!/usr/bin/env php
<?php
require __DIR__.'/vendor/autoload.php';
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\SingleCommandApplication;
(new SingleCommandApplication())
->setName('My Super Command') // Optional
->setVersion('1.0.0') // Optional
->addArgument('foo', InputArgument::OPTIONAL, 'The directory')
->addOption('bar', null, InputOption::VALUE_REQUIRED)
->setCode(function (InputInterface $input, OutputInterface $output) {
// output arguments and options
})
->run();
|
You can still register a command as usual:
通常どおりコマンドを登録できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/usr/bin/env php
<?php
require __DIR__.'/vendor/autoload.php';
use Acme\Command\DefaultCommand;
use Symfony\Component\Console\Application;
$application = new Application('echo', '1.0.0');
$command = new DefaultCommand();
$application->add($command);
$application->setDefaultCommand($command->getName(), true);
$application->run();
|
The setDefaultCommand() method
accepts a boolean as second parameter. If true, the command echo
will then
always be used, without having to pass its name.
setDefaultCommand() メソッドは、ブール値を 2 番目のパラメーターとして受け入れます。 true の場合、コマンド echo は常に使用され、その名前を渡す必要はありません。