Rumah > pembangunan bahagian belakang > tutorial php > Perintah Konsol Interaktif di Laravel

Perintah Konsol Interaktif di Laravel

百草
Lepaskan: 2025-03-06 01:06:11
asal
397 orang telah melayarinya

Interactive Console Commands in Laravel

Apabila membina alat baris arahan di Laravel, salah satu cabaran biasa adalah mengendalikan input pengguna yang hilang atau salah dengan anggun. Ciri PromptsformissingInput Laravel menangani perkara ini dengan mengubah perintah artisan standard ke dalam dialog interaktif.

Daripada gagal apabila argumen hilang, perintah anda boleh melibatkan pengguna dengan arahan yang berguna, membimbing mereka melalui input yang diperlukan. Pendekatan ini amat berharga untuk tugas penyelenggaraan yang kompleks, skrip penempatan, atau sebarang keadaan di mana anda perlu memastikan input baris arahan yang tepat sambil mengekalkan antara muka profesional dan mesra pengguna.

<!-- Syntax highlighted by torchlight.dev -->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' => 'What type of content are you publishing?',
            'status' => 'Should this be published as draft or live?'
        ];
    }
}
Salin selepas log masuk

mari kita meneroka contoh praktikal perintah sandaran pangkalan data dengan arahan interaktif:

<!-- Syntax highlighted by torchlight.dev --><?php

namespace App\Console\Commands;

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

class BackupDatabase extends Command implements PromptsForMissingInput
{
    protected $signature = &#39;db:backup
        {connection? : Database connection to backup}
        {--tables=* : Specific tables to backup}
        {--compress : Compress the backup file}&#39;;
    protected $description = &#39;Create a database backup&#39;;

    protected function promptForMissingArgumentsUsing(): array
    {
        return [
            &#39;connection&#39; => fn () => choice(
                'Which database connection should be backed up?',
                [
                    'mysql' => 'MySQL Primary Database',
                    'sqlite' => 'SQLite Testing Database',
                    'pgsql' => 'PostgreSQL Analytics Database'
                ],
                'mysql'
            ),
            '--tables' => fn () => multiChoice(
                'Select tables to backup (leave empty for all):',
                $this->getAvailableTables()
            ),
            '--compress' => fn () => confirm(
                'Would you like to compress the backup?',
                true
            )
        ];
    }

    private function getAvailableTables(): array
    {
        // Fetch tables from database
        return ['users', 'posts', 'comments', 'orders'];
    }

    public function handle()
    {
        $connection = $this->argument('connection');
        $tables = $this->option('tables');
        $compress = $this->option('compress');
        $this->info("Starting backup of {$connection} database...");

        // Backup logic here...
    }
}
Salin selepas log masuk

Interface PromptsformissingInput mengubah interaksi baris perintah ke dalam dialog mesra pengguna, menjadikan perintah artis anda lebih intuitif dan lebih mudah digunakan.

Atas ialah kandungan terperinci Perintah Konsol Interaktif di Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan