Метод run класса Application
Метод run класса Application запускает консольное приложение.
Он принимает объект Input (по умолчанию ArgvInput) и объект
Output (по умолчанию ConsoleOutput). Метод разбирает
аргументы командной строки, находит нужную команду, выполняет её
и возвращает целочисленный код завершения. Обычно этот метод
вызывается в исполняемом файле bin/console.
Синтаксис
public function run(InputInterface $input = null, OutputInterface $output = null): int
Пример
Давайте создадим простое консольное приложение с одной командой
и запустим его через метод run:
<?php
use SymfonyComponentConsoleApplication;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
require __DIR__ . '/../vendor/autoload.php';
$app = new Application();
$app->add(new class extends Command {
protected static $defaultName = 'user:greet';
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('hello');
return Command::SUCCESS;
}
});
$exitCode = $app->run();
exit($exitCode);
?>
Результат выполнения команды php bin/console.php user:greet:
hello
Пример
Давайте передадим в метод run собственные объекты ввода
и вывода, чтобы перехватить результат:
<?php
use SymfonyComponentConsoleApplication;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputArgvInput;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputBufferedOutput;
use SymfonyComponentConsoleOutputOutputInterface;
require __DIR__ . '/../vendor/autoload.php';
$app = new Application();
$app->setAutoExit(false);
$app->add(new class extends Command {
protected static $defaultName = 'article:show';
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('article');
return Command::SUCCESS;
}
});
$input = new ArgvInput(['console', 'article:show']);
$output = new BufferedOutput();
$exitCode = $app->run($input, $output);
echo $exitCode . ': ' . $output->fetch();
?>
Результат выполнения кода:
"0: article"
Смотрите также
-
класс
Application,
который представляет консольное приложение -
метод
add,
который регистрирует команду в приложении -
метод
setAutoExit,
который отключает автоматическое завершение приложения -
класс
SymfonyStyle,
который упрощает форматирование вывода команд