Компонент Console: команды CLI
Создавайте интерактивные инструменты CLI с помощью классов команд Symfony Console
«Компонент Console: команды CLI» — бесплатный урок PHP Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.
Что такое компонент Symfony Console?
Symfony Console позволяет создавать структурированные приложения CLI на PHP, пригодные для тестирования, с параметрами, аргументами, индикаторами выполнения и цветным выводом.
Установка
Установите компонент.
$ composer require symfony/consoleСоздание команды
Расширьте Command и переопределите configure() и execute().
<?php
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class GreetCommand extends Command
{
protected static string $defaultName = "app:greet";
protected function configure(): void
{
$this->setDescription("Greet a user")
->addArgument("name", \InputArgument::REQUIRED, "Name to greet")
->addOption("uppercase", "u", \InputOption::VALUE_NONE, "Uppercase output");
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$name = $input->getArgument("name");
if ($input->getOption("uppercase")) $name = strtoupper($name);
$output->writeln("Hello, $name!");
return Command::SUCCESS;
}
}Настройка приложения
Зарегистрируйте команды в Application и запустите его.
<?php
use Symfony\Component\Console\Application;
$app = new Application("MyApp", "1.0.0");
$app->add(new GreetCommand());
$app->run();Аргументы и параметры
Аргументы являются позиционными (обязательными или необязательными). Параметры — это именованные флаги (--name=value или -n value).
<?php
$this->addArgument("file", InputArgument::REQUIRED)
->addArgument("output", InputArgument::OPTIONAL, "Output file", "out.txt")
->addOption("verbose", "v", InputOption::VALUE_NONE, "Verbose output")
->addOption("format", "f", InputOption::VALUE_REQUIRED, "Output format", "json");Вспомогательные средства вывода
Форматируйте вывод с помощью вспомогательных методов.
<?php
$output->writeln("<info>Success!</info>");
$output->writeln("<error>Error occurred</error>");
$output->writeln("<comment>Processing...</comment>");ProgressBar
Отображайте индикатор выполнения для длительных задач.
<?php
use Symfony\Component\Console\Helper\ProgressBar;
$bar = new ProgressBar($output, count($items));
$bar->start();
foreach ($items as $item) {
processItem($item);
$bar->advance();
}
$bar->finish();Вспомогательное средство для таблиц
Отображайте табличные данные в терминале.
<?php
use Symfony\Component\Console\Helper\Table;
$table = new Table($output);
$table->setHeaders(["ID", "Name", "Email"])
->setRows($userData)
->render();Вспомогательное средство для вопросов
Предлагайте пользователю ввести данные в интерактивном режиме.
<?php
use Symfony\Component\Console\Question\Question;
$helper = $this->getHelper("question");
$question = new Question("Enter database password: ");
$question->setHidden(true);
$password = $helper->ask($input, $output, $question);Коды возврата
Возвращайте из execute() значение Command::SUCCESS (0), Command::FAILURE (1) или Command::INVALID (2). Системы CI используют эти коды.
В Laravel
Команды Laravel Artisan расширяют Illuminate\Console\Command и используют свойства $signature и $description вместо configure().
Итоги
Создавайте команды, расширяя Command. Определяйте аргументы и параметры в configure(). Размещайте логику выполнения в execute(). Используйте вспомогательные средства для индикаторов выполнения, таблиц и запросов к пользователю.
Быстрая проверка
Какое целое число должна возвращать успешная команда из execute()?
Часто задаваемые вопросы
Урок «Компонент Console: команды CLI» бесплатный?
Да — полный текст урока «Компонент Console: команды CLI» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.
Чему я научусь в уроке «Компонент Console: команды CLI»?
Создавайте интерактивные инструменты CLI с помощью классов команд Symfony Console Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать PHP Academy?
Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Компонент Console: команды CLI»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке PHP Academy?
Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- HttpFoundation: запрос и ответ
- Контейнер DependencyInjection
- EventDispatcher: слабо связанные события
- Компонент Console: команды CLI