Інтерактивні команди консолі в Laravel

Перекладено ШІ 2 Laravel News 02 червня, 2026

Створення інструментів командного рядка в Laravel може ставити певні виклики, особливо при обробці неналежного чи відсутнього вводу від користувача. Дізнайтеся, як за допомогою інтерфейсу PromptsForMissingInput перетворити ваші Artisan команди в інтуїтивно зрозумілі діалоги, які полегшать взаємодію з користувачем!

При створенні командних інструментів у Laravel однією з поширених проблем є коректна обробка відсутнього або некоректного введення даних користувача. Трейти PromptsForMissingInput від Laravel вирішують цю ситуацію, перетворюючи стандартні команди Artisan на інтерактивні діалоги.

Замість того, щоб завершуватися з помилкою через відсутність аргументів, ваші команди можуть взаємодіяти з користувачами, надаючи корисні підказки та ведучи їх через необхідні дані. Цей підхід особливо корисний для складних завдань обслуговування, сценаріїв розгортання або будь-якої ситуації, де важливо забезпечити точність вводу команди, зберігаючи професійний та дружній до користувача інтерфейс.

use Illuminate\Console\Command;
use Illuminate\Contracts\Console\PromptsForMissingInput;

class PublishContent extends Command implements PromptsForMissingInput
{
    protected $signature = 'content:publish {type} {status}';

    protected function promptForMissingArgumentsUsing(): array
    {
        return [
            'type' => 'Який тип контенту ви публікуєте?',
            'status' => 'Чи має це бути опублікованим як чернетка чи в реальному режимі?'
        ];
    }
}

Розглянемо практичний приклад команди для резервного копіювання бази даних з інтерактивними запитаннями:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Contracts\Console\PromptsForMissingInput;

class BackupDatabase extends Command implements PromptsForMissingInput
{
    protected $signature = 'db:backup
        {connection? : З\'єднання з базою даних для резервного копіювання}
        {--tables=* : Конкретні таблиці для резервного копіювання}
        {--compress : Стиснути резервну копію}';
        
    protected $description = 'Створити резервну копію бази даних';

    protected function promptForMissingArgumentsUsing(): array
    {
        return [
            'connection' => fn () => choice(
                'Яке з\'єднання до бази даних потрібно резервно копіювати?',
                [
                    'mysql' => 'Основна база даних MySQL',
                    'sqlite' => 'Тестова база даних SQLite',
                    'pgsql' => 'База даних PostgreSQL для аналітики'
                ],
                'mysql'
            ),
            '--tables' => fn () => multiChoice(
                'Виберіть таблиці для резервного копіювання (залиште порожнім для всіх):',
                $this->getAvailableTables()
            ),
            '--compress' => fn () => confirm(
                'Бажаєте стиснути резервну копію?',
                true
            )
        ];
    }

    private function getAvailableTables(): array
    {
        // Отримати таблиці з бази даних
        return ['users', 'posts', 'comments', 'orders'];
    }

    public function handle()
    {
        $connection = $this->argument('connection');
        $tables = $this->option('tables');
        $compress = $this->option('compress');
        $this->info("Розпочинаємо резервне копіювання бази даних {$connection}...");

        // Логіка резервного копіювання...
    }
}

Інтерфейс PromptsForMissingInput перетворює взаємодію командного рядка на зрозумілі діалоги, роблячи ваші команди Artisan більш інтуїтивними і легкими у використанні.

Популярні

Інше, що варто прочитати

30 Оновлено 01 червня, 2026

Інтеграція Laravel Socialite з бібліотекою Google Client PHP

Ви хочете навчитися, як інтегрувати Google OAuth у вашому проекті Laravel, використовуючи Socialite? Дізнайтеся, як налаштувати доступ до сервісів Google, таких як Календар, у нашій сьогоднішній статті

19 Оновлено 01 червня, 2026

Використання штучного інтелекту для управління перекладами в Laravel

Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!

49 Оновлено 01 червня, 2026

Nuxt 3 + Laravel Sanctum: Просте та надійне рішення для автентифікації вашого SPA та API

У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту