Отримання параметрів команди в Laravel Artisan

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 25 червня, 2025
Laravel спрощує доступ до аргументів та опцій у ваших кастомних командах Artisan, дозволяючи легко отримувати та валідувати параметри. Дізнайтеся, як ці вбудовані допоміжні методи можуть покращити ваш процес розробки!

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 дозволяють створювати надійні інструменти командного рядка, які обробляють складні сценарії введення з мінімальною складністю коду