Метод add класса Application
Метод add класса Application добавляет новую команду в консольное приложение.
Первым параметром передаётся объект команды, реализующий интерфейс Command.
После регистрации команда становится доступной для вызова через терминал.
Синтаксис
$res = $application->add(Command $command);
Метод возвращает ссылку на текущий объект Application, что позволяет выстраивать цепочку вызовов.
Пример
Давайте создадим простую команду и добавим её в приложение:
<?php
namespace AppCommand;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
class HelloCommand extends Command
{
protected static $defaultName = 'app:hello';
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('hello');
return Command::SUCCESS;
}
}
?>
Теперь зарегистрируем эту команду в объекте Application:
<?php
use AppCommandHelloCommand;
use SymfonyComponentConsoleApplication;
$application = new Application();
$application->add(new HelloCommand());
$application->run();
?>
Результат выполнения команды php bin/console app:hello:
hello
Пример
Давайте добавим несколько команд и проверим их наличие через метод has:
<?php
use AppCommandHelloCommand;
use AppCommandUserCommand;
use SymfonyComponentConsoleApplication;
$application = new Application();
$application->add(new HelloCommand());
$application->add(new UserCommand());
var_dump($application->has('app:hello'));
var_dump($application->has('app:user'));
?>
Результат выполнения кода:
bool(true)
bool(true)
Пример
Давайте получим команду из приложения и запустим её через метод run:
<?php
use AppCommandHelloCommand;
use SymfonyComponentConsoleApplication;
use SymfonyComponentConsoleInputArrayInput;
use SymfonyComponentConsoleOutputConsoleOutput;
$application = new Application();
$application->add(new HelloCommand());
$command = $application->find('app:hello');
$input = new ArrayInput([]);
$output = new ConsoleOutput();
$command->run($input, $output);
?>
Результат выполнения кода:
hello
Смотрите также
-
класс
Application,
который представляет консольное приложение -
метод
run,
который запускает консольное приложение -
метод
find,
который находит команду по имени -
метод
has,
который проверяет наличие команды