Ввод и вывод данных

В данном руководстве, вы научитесь работать с переданными данными и выводить результаты пользователю.

Получение входных данных

В процессе выполнения команды вы можете получать переданные аргументы и опции:

public function handle(): int
{
    // Получить все аргументы разом
    $arguments = $this->arguments();
    // ['user' => 'john', 'type' => 'register']
    
    // Получить конкретный аргумент
    $user = $this->argument('user'); // 'john'
    
    // Проверить, передан ли аргумент
    if ($this->hasArgument('type')) {
        // ...
    }
    
    // Всё то же самое для опций
    $options = $this->options();
    $format = $this->option('format');
    
    if ($this->hasOption('queue')) {
        // ...
    }
}
PHP

Для анонимных команд всё работает точно так же:

Console::command('mail:send {user?}', function () {
    // Первый способ – с проверкой
    $user = $this->hasArgument('user') ? 
            $this->argument('user') : 'default';
    
    // Второй способ – короче, со значением по умолчанию
    $user = $this->argument('user', 'default');
});
PHP

Вывод данных

Imhotep предлагает богатый набор способов вывода информации – от простого текста до красочных блоков и анимированных индикаторов выполнения.

public function handle(): int
{
    // Обычный текст
    $this->line('Просто текст');
    
    // Пустая строка
    $this->newLine();
    // или
    $this->line();
    
    // Цветной текст для разных ситуаций
    $this->info('Информация');     // Синий
    $this->warn('Предупреждение'); // Желтый
    $this->error('Ошибка');        // Красный
    $this->success('Успех');       // Зеленый
}
PHP

Информационные блоки

Блоки создают визуальное выделение – отлично подходят для важных сообщений:

$this->blockInfo('Информационное сообщение.');
// Выглядит как: [ INFO ] Информационное сообщение.

$this->blockWarn('Предупреждающее сообщение.');
$this->blockError('Сообщение об ошибке.');
$this->blockSuccess('Сообщение об успехе.');
PHP

Специальные компоненты вывода

// Тревожное сообщение с рамкой из звездочек
$this->alert('Обратите внимание!');
$this->alert('Критическая ошибка!', 'red');

// Маркированный список
$this->bulletList(['Пункт 1', 'Пункт 2', 'Пункт 3']);
$this->bulletList(['Один', 'Два', 'Три'], '✶');

// Две колонки: метка и значение
$this->twoColumnDetail('Пользователь', 'john@example.com');
// Вывод: Пользователь.....................john@example.com

// Индикатор выполнения задачи с замером времени
$this->task('Обновление данных', function () {
    sleep(1); // Какая-то работа
    return true; // true – успех, false – ошибка
});
// Вывод: Обновление данных.......1.0234s DONE
PHP

Совет: Все методы вывода доступны и в анонимных командах. Экспериментируйте с разными способами, чтобы сделать вывод своих команд понятным и красивым.

Следующие шаги

Теперь, когда вы умеете работать с вводом и выводом, изучите: