Атрибут AsCommand
Атрибут AsCommand вешается на класс
консольной команды и регистрирует её в приложении.
Первым параметром передаётся имя команды. Вторым
параметром можно передать описание команды. Также
доступны параметры hidden и aliases.
Синтаксис
#[AsCommand(name, description: description, hidden: hidden, aliases: aliases)]
Пример
Давайте создадим простую команду, которая выводит приветствие:
<?php
namespace AppCommand;
use SymfonyComponentConsoleAttributeAsCommand;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
#[AsCommand(
name: 'app:hello',
description: 'Выводит приветствие',
)]
class HelloCommand extends Command
{
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('hello');
return Command::SUCCESS;
}
}
?>
Запустим команду в терминале:
php bin/console app:hello
Результат выполнения команды:
hello
Пример
Давайте передадим описание команды и добавим
псевдоним app:hi:
<?php
namespace AppCommand;
use SymfonyComponentConsoleAttributeAsCommand;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
#[AsCommand(
name: 'app:hello',
description: 'Выводит приветствие',
aliases: ['app:hi'],
)]
class HelloCommand extends Command
{
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('hello');
return Command::SUCCESS;
}
}
?>
Теперь команду можно вызвать по псевдониму:
php bin/console app:hi
Результат выполнения команды:
hello
Пример
Давайте скроем команду из списка при помощи
параметра hidden:
<?php
namespace AppCommand;
use SymfonyComponentConsoleAttributeAsCommand;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
#[AsCommand(
name: 'app:hello',
description: 'Выводит приветствие',
hidden: true,
)]
class HelloCommand extends Command
{
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('hello');
return Command::SUCCESS;
}
}
?>
Команда не попадёт в вывод list, но её
по-прежнему можно вызвать напрямую:
php bin/console app:hello
Результат выполнения команды:
hello
Смотрите также
-
команда
make:command,
которая создаёт класс консольной команды -
команда
list,
которая выводит список всех команд -
команда
help,
которая выводит справку по команде -
атрибут
AsCommand,
который регистрирует консольную команду