Beim Erstellen von Befehlszeilen-Tools in Laravel besteht eine der häufigsten Herausforderungen darin, fehlende oder falsche Benutzereingaben anmutig zu bearbeiten. Die Eingabeaufforderung von LaravelsformissingInput befasst sich mit dieser Handwerksbefehle in interaktive Dialoge.
..
Anstatt zu fehlenden, wenn Argumente fehlen, können Ihre Befehle Benutzer mit hilfreichen Eingabeaufforderungen ansprechen und diese durch die erforderlichen Eingaben führen. Dieser Ansatz ist besonders wertvoll für komplexe Wartungsaufgaben, Bereitstellungsskripte oder eine Situation, in der Sie genaue Befehlszeileneingaben sicherstellen müssen, während Sie eine professionelle und benutzerfreundliche Schnittstelle beibehalten.<!-- 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?' ]; } }
Lassen Sie uns ein praktisches Beispiel für einen Datenbanksicherungsbefehl mit interaktiven Eingabeaufforderungen untersuchen:
<!-- 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 = 'db:backup {connection? : Database connection to backup} {--tables=* : Specific tables to backup} {--compress : Compress the backup file}'; protected $description = 'Create a database backup'; protected function promptForMissingArgumentsUsing(): array { return [ 'connection' => 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... } }
Die EingabeaufforderungformissingInput-Schnittstelle verwandelt die Befehlszeileninteraktionen in benutzerfreundliche Dialoge, wodurch Ihre Handwerkerbefehle intuitiver und einfacher zu bedienen sind.
Das obige ist der detaillierte Inhalt vonInteraktive Konsolenbefehle in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!