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

Класс Command

Класс Command является базовым для всех консольных команд в Laravel. Он предоставляет удобный интерфейс для создания пользовательских команд, которые могут быть выполнены через Artisan CLI. Основные компоненты команды - это свойства signature для определения имени и аргументов, description для описания команды и метод handle, где содержится основная логика выполнения. Первым параметром в сигнатуре передаётся имя команды, затем определяются аргументы и опции, а в методе handle реализуется логика работы.

Создание команды

Для создания новой консольной команды используется Artisan-команда make:command. Она генерирует класс команды в директории app/Console/Commands. Вот пример создания команды с именем SendEmails:

<?php php artisan make:command SendEmails ?>

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

"Console command created successfully."

Синтаксис

<?php class CommandName extends Command { protected $signature = 'command:name {argument} {--option=}'; protected $description = 'Command description'; public function handle() { // Logic implementation } } ?>

Пример

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

<?php namespace AppConsoleCommands; use IlluminateConsoleCommand; class GreetUser extends Command { protected $signature = 'greet:user {name}'; protected $description = 'Greet a user by name'; public function handle() { $name = $this->argument('name'); $this->info("Hello, $name! Welcome to Laravel."); } } ?>

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

"Hello, John! Welcome to Laravel."

Аргументы и опции

Команды могут принимать как обязательные аргументы, так и опции. Аргументы указываются в фигурных скобках, а опции с префиксом --. Например:

<?php namespace AppConsoleCommands; use IlluminateConsoleCommand; class ProcessData extends Command { protected $signature = 'process:data {type : Type of data to process} {--limit=100 : Number of records to process} {--force : Force processing without confirmation}'; protected $description = 'Process data with specified parameters'; public function handle() { $type = $this->argument('type'); $limit = $this->option('limit'); $force = $this->option('force'); if (!$force && !$this->confirm('Do you want to proceed?')) { return; } $this->info("Processing $type with limit $limit..."); } } ?>

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

"Processing users with limit 50..."

Интерактивный ввод

Класс Command предоставляет методы для интерактивного взаимодействия с пользователем. Метод ask запрашивает строку, choice предоставляет выбор из списка, а confirm запрашивает подтверждение:

<?php namespace AppConsoleCommands; use IlluminateConsoleCommand; class InteractiveCommand extends Command { protected $signature = 'interactive:example'; protected $description = 'Demonstrate interactive input methods'; public function handle() { $name = $this->ask('Enter your name'); $role = $this->choice('Select your role', ['admin', 'user', 'guest']); $confirmed = $this->confirm('Is this correct?'); $this->info("Name: $name, Role: $role, Confirmed: ".($confirmed ? 'yes' : 'no')); } } ?>

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

"Name: Alice, Role: admin, Confirmed: yes"

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

  • команда make:command,
    которая генерирует новый класс консольной команды
  • метод handle,
    который содержит основную логику выполнения команды
  • атрибут signature,
    который определяет имя и параметры команды
  • метод info,
    который выводит информационное сообщение в консоль
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить