РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1330 of 1392 menu

Метод choice

Метод choice используется в консольных командах Laravel для создания интерактивного меню выбора. Он предлагает пользователю выбрать один вариант из списка и возвращает выбранное значение. Первым параметром передаётся вопрос, вторым - массив вариантов, третьим - индекс выбранного по умолчанию, четвёртым - количество попыток ввода. Метод блокирует выполнение команды до получения ответа от пользователя.

Синтаксис

<?php $this->choice($question, $choices, $default, $maxAttempts); ?>

Пример

Давайте создадим команду, которая спрашивает у пользователя его любимый язык программирования:

<?php namespace App\Console\Commands; use Illuminate\Console\Command; class AskLanguageCommand extends Command { protected $signature = 'ask:language'; protected $description = 'Ask user about favorite programming language'; public function handle() { $languages = ['PHP', 'JavaScript', 'Python', 'Ruby', 'Go']; $choice = $this->choice( 'What is your favorite programming language?', $languages, 0, 3 ); $this->info("You selected: {$choice}"); } } ?>

Результат выполнения команды в терминале:

What is your favorite programming language? [0] PHP [1] JavaScript [2] Python [3] Ruby [4] Go > 0 You selected: PHP

Пример

Рассмотрим пример с выбором действия в консольной команде:

<?php namespace App\Console\Commands; use Illuminate\Console\Command; use App\Models\User; class UserActionCommand extends Command { protected $signature = 'user:action'; protected $description = 'Perform action on user'; public function handle() { $actions = ['view', 'delete', 'block', 'unblock']; $action = $this->choice( 'Select action for user:', $actions, 0 ); $user = User::first(); if ($action === 'view') { $this->info("User: {$user->name}"); } elseif ($action === 'delete') { $user->delete(); $this->warn('User deleted successfully'); } else { $this->info("Action '{$action}' performed on user"); } } } ?>

Результат выполнения команды с выбором действия:

Select action for user: [0] view [1] delete [2] block [3] unblock > 0 User: John Doe

Пример

Использование ассоциативного массива для более осмысленных подписей:

<?php namespace App\Console\Commands; use Illuminate\Console\Command; class SetupCommand extends Command { protected $signature = 'app:setup'; protected $description = 'Configure application settings'; public function handle() { $options = [ 'production' => 'Production environment', 'staging' => 'Staging environment', 'development' => 'Development environment' ]; $choice = $this->choice( 'Select environment for setup:', $options, 2 ); $key = array_search($choice, $options); $this->info("Setting up {$choice} environment"); if ($key === 'production') { $this->call('config:cache'); $this->call('route:cache'); } } } ?>

Результат выполнения команды:

Select environment for setup: [0] Production environment [1] Staging environment [2] Development environment > 2 Setting up Development environment

Смотрите также

  • метод ask,
    который запрашивает текстовый ввод от пользователя
  • метод confirm,
    который запрашивает подтверждение действия
  • метод secret,
    который запрашивает скрытый ввод (например, для паролей)
  • метод info,
    который выводит информационное сообщение в консоль
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить