0Pricing
PHP Academy · Урок

Компонент 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 — локальная установка не требуется.

Все уроки этого курса

  1. HttpFoundation: запрос и ответ
  2. Контейнер DependencyInjection
  3. EventDispatcher: слабо связанные события
  4. Компонент Console: команды CLI
← Назад к PHP Academy