Laravel пропонує прості методи для доступу до аргументів і параметрів у ваших кастомних командах Artisan. Ці вбудовані допоміжні функції спрощують отримання та валідацію параметрів.
Щоб отримати окремі параметри, використовуйте спеціалізовані методи:
$username = $this->argument('username');
$environment = $this->option('env');
Також можна отримати всі параметри одночасно, що корисно при створенні динамічних командних процесорів або утиліт для налагодження.
$allArguments = $this->arguments();
$allOptions = $this->options();
Ось команда для управління резервними копіями, яка демонструє повну обробку параметрів:
class BackupDatabase extends Command
{
protected $signature = 'backup:database
{database : Назва бази даних для резервного копіювання}
{--path= : Користувацька директорія для резервної копії}
{--compress : Стиснути файл резервної копії}
{--exclude=* : Таблиці, які потрібно виключити з резервного копіювання}
{--S|silent : Запустити без виводу}';
public function handle()
{
$databaseName = $this->argument('database');
$backupPath = $this->option('path') ?? storage_path('backups');
$shouldCompress = $this->option('compress');
$silent = $this->option('silent');
if (!$silent) {
$this->line("Починаємо резервне копіювання бази даних: {$databaseName}");
$this->line("Місце для резервної копії: {$backupPath}");
}
if ($shouldCompress) {
$this->info('Стиснення увімкнено');
}
$excludedTables = $this->option('exclude');
if (!empty($excludedTables)) {
$this->warn('Виключено таблиці: ' . implode(', ', $excludedTables));
}
$allParams = $this->arguments();
$allFlags = $this->options();
if ($this->option('verbose')) {
$this->table(['Тип параметра', 'Кількість'], [
['Аргументи', count($allParams)],
['Опції', count($allFlags)]
]);
}
}
}
Методи доступу до параметрів у Laravel дозволяють створювати надійні інструменти командного рядка, які обробляють складні сценарії введення з мінімальною складністю коду