Метод getApplication
Метод getApplication класса Command возвращает
объект Application, к которому привязана консольная
команда. Через приложение можно получить доступ к другим
командам, глобальным опциям, а также к самому консольному
приложению. Метод не принимает параметров и возвращает
объект Application или null, если команда
ещё не привязана к приложению.
Синтаксис
public function getApplication(): ?Application
Пример
Давайте создадим команду и получим в методе execute
объект приложения через getApplication:
<?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
{
$app = $this->getApplication();
$output->writeln($app->getName());
return Command::SUCCESS;
}
}
?>
Результат выполнения команды php bin/console app:article:
"Console Tool"
Пример
Давайте через приложение получим список всех доступных команд и выведем их имена:
<?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
{
$app = $this->getApplication();
$names = array_keys($app->all());
$output->writeln(implode(', ', $names));
return Command::SUCCESS;
}
}
?>
Результат выполнения команды php bin/console app:article:
"app:article, help, list, about"
Пример
Давайте проверим, привязана ли команда к приложению, и выведем соответствующее сообщение:
<?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
{
$app = $this->getApplication();
if (null === $app) {
$output->writeln('command is not attached');
return Command::FAILURE;
}
$output->writeln('command is attached');
return Command::SUCCESS;
}
}
?>
Результат выполнения команды php bin/console app:article:
"command is attached"