Ввод и вывод данных
В данном руководстве, вы научитесь работать с переданными данными и выводить результаты пользователю.
Получение входных данных
В процессе выполнения команды вы можете получать переданные аргументы и опции:
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
Совет: Все методы вывода доступны и в анонимных командах. Экспериментируйте с разными способами, чтобы сделать вывод своих команд понятным и красивым.
Следующие шаги
Теперь, когда вы умеете работать с вводом и выводом, изучите:
- Создание команд – создавайте свои собственные команды
- Сигнатура команд – настраивайте аргументы и опции
- Запуск команд – вызов команд из консоли
- Программный запуск команд – вызов команд из кода