Метод error
Метод error применяется к экземпляру класса Command в консольных командах Laravel и позволяет выводить сообщения об ошибках в терминал. Первым параметром передаётся текст сообщения, вторым - массив опций для форматирования (необязательно). Метод автоматически использует поток stderr, что позволяет отделить ошибки от обычного вывода.
Синтаксис
<?php
$this->error($message, $options);
?>
Пример
Давайте создадим простую команду, которая выводит сообщение об ошибке при неудачной валидации данных:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class ValidateDataCommand extends Command
{
protected $signature = 'data:validate {id}';
protected $description = 'Validate data by ID';
public function handle()
{
$id = $this->argument('id');
if ($id < 1) {
$this->error('Invalid ID provided. ID must be greater than 0.');
return 1;
}
$this->info('Data validated successfully.');
return 0;
}
}
?>
Результат выполнения команды с некорректным параметром:
"Invalid ID provided. ID must be greater than 0."
Пример
Метод error поддерживает форматирование текста с помощью тегов:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class FormatErrorCommand extends Command
{
protected $signature = 'error:format';
protected $description = 'Show formatted error message';
public function handle()
{
$message = '<bg=red>CRITICAL</> Database connection failed';
$this->error($message);
$message = '<fg=black;bg=yellow>WARNING</> Low disk space';
$this->error($message, ['fg' => 'white', 'bg' => 'red']);
}
}
?>
Результат выполнения команды:
"CRITICAL Database connection failed"
"WARNING Low disk space"
Пример
Используем error для отображения множества ошибок в процессе выполнения команды:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\File;
class FileCheckCommand extends Command
{
protected $signature = 'file:check {paths*}';
protected $description = 'Check existence of files';
public function handle()
{
$paths = $this->argument('paths');
$errors = 0;
foreach ($paths as $path) {
if (!File::exists($path)) {
$this->error("File not found: {$path}");
$errors++;
}
}
if ($errors > 0) {
$this->error("Total errors: {$errors}");
return 1;
}
$this->info('All files exist.');
return 0;
}
}
?>
Результат выполнения команды с несколькими путями:
"File not found: /tmp/missing.txt"
"File not found: /var/log/unknown.log"
"Total errors: 2"