Метод get класса Application
Метод get класса Application возвращает объект команды,
зарегистрированной в приложении. Первым параметром передаётся имя команды,
которое было указано при её создании. Если команда с таким именем не найдена,
метод выбрасывает исключение CommandNotFoundException.
Синтаксис
public function get(string $name): Command
Пример
Давайте создадим приложение, зарегистрируем в нём команду
и получим её через метод get:
<?php
namespace AppCommand;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
class ArticleCommand extends Command
{
protected static $defaultName = 'app:article';
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('hello');
return Command::SUCCESS;
}
}
?>
Теперь получим эту команду из приложения:
<?php
use AppCommandArticleCommand;
use SymfonyComponentConsoleApplication;
$app = new Application();
$app->add(new ArticleCommand());
$command = $app->get('app:article');
echo $command->getName();
?>
Результат выполнения кода:
"app:article"
Пример
Давайте обработаем ситуацию, когда команда не найдена:
<?php
use SymfonyComponentConsoleApplication;
use SymfonyComponentConsoleExceptionCommandNotFoundException;
$app = new Application();
try {
$command = $app->get('app:unknown');
} catch (CommandNotFoundException $e) {
echo $e->getMessage();
}
?>
Результат выполнения кода:
"Command "app:unknown" is not defined."