Метод find класса Application
Метод find класса Application ищет команду
по её имени или алиасу в приложении Symfony.
Первым параметром передаётся имя команды.
Метод возвращает объект Command, если команда найдена,
и выбрасывает исключение CommandNotFoundException,
если такой команды нет.
Синтаксис
public function find(string $name): Command
Пример
Давайте создадим приложение, зарегистрируем команду и найдём её по имени:
<?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('article');
return Command::SUCCESS;
}
}
?>
Теперь найдём эту команду через метод find:
<?php
use AppCommandArticleCommand;
use SymfonyComponentConsoleApplication;
use SymfonyComponentConsoleExceptionCommandNotFoundException;
$application = new Application();
$application->add(new ArticleCommand());
try {
$command = $application->find('app:article');
echo $command->getName();
} catch (CommandNotFoundException $e) {
echo 'not found';
}
?>
Результат выполнения кода:
"app:article"
Пример
Давайте попробуем найти команду, которой нет в приложении:
<?php
use AppCommandArticleCommand;
use SymfonyComponentConsoleApplication;
use SymfonyComponentConsoleExceptionCommandNotFoundException;
$application = new Application();
$application->add(new ArticleCommand());
try {
$command = $application->find('app:user');
echo $command->getName();
} catch (CommandNotFoundException $e) {
echo 'not found';
}
?>
Результат выполнения кода:
"not found"
Пример
Давайте найдём команду по её алиасу:
<?php
namespace AppCommand;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
class ArticleCommand extends Command
{
protected static $defaultName = 'app:article';
protected static $defaultDescription = 'article command';
protected function configure(): void
{
$this->setAliases(['app:a']);
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('article');
return Command::SUCCESS;
}
}
?>
Теперь найдём команду по алиасу 'app:a':
<?php
use AppCommandArticleCommand;
use SymfonyComponentConsoleApplication;
$application = new Application();
$application->add(new ArticleCommand());
$command = $application->find('app:a');
echo $command->getName();
?>
Результат выполнения кода:
"app:article"
Смотрите также
-
класс
SymfonyStyle,
который отвечает за красивый вывод в консоль -
класс
Application,
который представляет консольное приложение -
метод
run,
который запускает приложение на выполнение -
метод
all,
который возвращает список всех зарегистрированных команд