Метод all
Метод all класса Application возвращает массив
всех команд, зарегистрированных в консольном приложении.
В отличие от метода get, который возвращает одну
команду по имени, метод all отдаёт полный список.
Ключами массива выступают имена команд, а значениями -
объекты этих команд. Метод не принимает параметров.
Синтаксис
public function all(): array
Пример
Давайте создадим приложение, добавим в него пару команд и выведем список всех зарегистрированных команд:
<?php
namespace AppCommand;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
class DemoCommand extends Command
{
protected static $defaultName = 'app:demo';
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('demo');
return Command::SUCCESS;
}
}
?>
Теперь получим список всех команд через метод all:
<?php
namespace AppCommand;
use SymfonyComponentConsoleApplication;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
class ListCommand extends Command
{
protected static $defaultName = 'app:list';
protected function execute(InputInterface $input, OutputInterface $output): int
{
$app = new Application();
$app->add(new DemoCommand());
$commands = $app->all();
$names = array_keys($commands);
$output->writeln(implode(', ', $names));
return Command::SUCCESS;
}
}
?>
Результат выполнения кода:
"app:demo, app:list, help, list"
Пример
Давайте переберём все команды и выведем имя каждой из них:
<?php
namespace AppCommand;
use SymfonyComponentConsoleApplication;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
class IterateCommand extends Command
{
protected static $defaultName = 'app:iterate';
protected function execute(InputInterface $input, OutputInterface $output): int
{
$app = new Application();
$app->add(new DemoCommand());
foreach ($app->all() as $name => $command) {
$output->writeln($name);
}
return Command::SUCCESS;
}
}
?>
Результат выполнения кода:
"app:demo
app:iterate
help
list"
Смотрите также
-
класс
Application,
который представляет консольное приложение -
метод
add,
который регистрирует команду в приложении -
метод
get,
который возвращает команду по её имени -
метод
find,
который ищет команду по неполному имени