Класс Application
Класс Application представляет собой консольное
приложение Symfony. Он хранит коллекцию команд, умеет
искать команду по имени и запускать её через метод
run. Первым параметром конструктор принимает имя
приложения, вторым - версию. Команды добавляются через
метод add, а получить их можно методами
get, has, all и find.
Синтаксис
<?php
use Symfony\Component\Console\Application;
$app = new Application(name, version);
?>
Пример
Давайте создадим консольное приложение и выведем его имя:
<?php
use Symfony\Component\Console\Application;
$app = new Application('my-app', '1.0.0');
echo $app->getName();
?>
Результат выполнения кода:
"my-app"
Пример
Давайте добавим команду в приложение через метод
add и проверим её наличие методом has:
<?php
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class HelloCommand extends Command
{
protected static $defaultName = 'app:hello';
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('hello');
return Command::SUCCESS;
}
}
$app = new Application('my-app', '1.0.0');
$app->add(new HelloCommand());
var_dump($app->has('app:hello'));
?>
Результат выполнения кода:
true
Пример
Давайте получим команду по имени через метод
get и выведем список всех команд методом
all:
<?php
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class HelloCommand extends Command
{
protected static $defaultName = 'app:hello';
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('hello');
return Command::SUCCESS;
}
}
$app = new Application('my-app', '1.0.0');
$app->add(new HelloCommand());
$command = $app->get('app:hello');
echo $command->getName();
?>
Результат выполнения кода:
"app:hello"
Пример
Давайте запустим приложение методом run и выполним
команду app:hello из терминала:
<?php
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class HelloCommand extends Command
{
protected static $defaultName = 'app:hello';
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('hello');
return Command::SUCCESS;
}
}
$app = new Application('my-app', '1.0.0');
$app->add(new HelloCommand());
$app->setAutoExit(false);
$app->run();
?>
Результат выполнения команды в терминале:
php bin/app.php app:hello
hello
Смотрите также
-
метод
run,
который запускает консольное приложение -
метод
add,
который добавляет команду в приложение -
метод
get,
который возвращает команду по имени -
метод
setAutoExit,
который управляет автоматическим выходом