Создание приложения одной команды
Дата обновления перевода 2023-08-21
Создание приложения одной команды
При создании инструмента командной строки вам может не понадобиться предоставлять несколько команд. В таком случае, передача названия команды каждый раз слишком трудоёмка. К счастью, можно удалить эту потребность, заявив приложение приожением одной команды:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#!/usr/bin/env php
<?php
require __DIR__.'/vendor/autoload.php';
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
(new Application('echo', '1.0.0'))
->register('echo')
->addArgument('foo', InputArgument::OPTIONAL, 'The directory')
->addOption('bar', null, InputOption::VALUE_REQUIRED)
->setCode(function (InputInterface $input, OutputInterface $output): int {
// аргументы и опции вывода
})
->getApplication()
->setDefaultCommand('echo', true) // Приложение одной команды
->run();
Метод setDefaultCommand()
принимает булевы значения в качестве второго параметра. Если "true", то команда
echo
будет использована всегда, без необходимости передачи её названия.
Конечно же, вы всё равно можете зарегистрировать команду, как обычно:
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();