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

Команда make:command

Команда make:command создаёт новый класс консольной команды в директории app/Console/Commands. Созданный класс расширяет базовый класс Command и позволяет определить логику выполнения команды. Обязательным параметром передаётся имя класса, которое также будет служить именем команды в Artisan. После создания файла необходимо определить свойства signature и description, а также реализовать метод handle, который содержит основную логику работы.

Синтаксис

php artisan make:command ИмяКоманды

Дополнительные опции:

# Создание команды в поддиректории php artisan make:command ИмяКоманды --path=путь/к/директории # Принудительная перезапись существующего файла php artisan make:command ИмяКоманды --force

Пример

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

<?php namespace App\Console\Commands; use Illuminate\Console\Command; class SayHello extends Command { protected $signature = 'say:hello {name : Имя пользователя}'; protected $description = 'Выводит приветствие для указанного пользователя'; public function handle(): int { $name = $this->argument('name'); $this->info("Hello, {$name}!"); return Command::SUCCESS; } } ?>

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

"Hello, John!"

Пример

Создадим команду с опциями и аргументами для отправки уведомлений:

<?php namespace App\Console\Commands; use Illuminate\Console\Command; use App\Models\User; class SendNotification extends Command { protected $signature = 'notify:send {user : ID пользователя} {--message= : Текст сообщения} {--urgent : Срочное уведомление}'; protected $description = 'Отправляет уведомление указанному пользователю'; public function handle(): int { $userId = $this->argument('user'); $message = $this->option('message') ?? 'Default message'; $isUrgent = $this->option('urgent'); $user = User::find($userId); if (!$user) { $this->error("User with ID {$userId} not found."); return Command::FAILURE; } if ($isUrgent) { $message = "[URGENT] " . $message; } $this->info("Notification sent to {$user->name}: {$message}"); return Command::SUCCESS; } } ?>

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

"Notification sent to John: [URGENT] Important message"

Пример

Создадим команду для очистки старых записей из базы данных с использованием интерактивного подтверждения:

<?php namespace App\Console\Commands; use Illuminate\Console\Command; use App\Models\Log; use Carbon\Carbon; class CleanOldRecords extends Command { protected $signature = 'clean:records {days=30 : Количество дней для хранения}'; protected $description = 'Удаляет записи старше указанного количества дней'; public function handle(): int { $days = (int) $this->argument('days'); $date = Carbon::now()->subDays($days); $count = Log::where('created_at', '<', $date)->count(); if ($count === 0) { $this->info('No records to clean.'); return Command::SUCCESS; } if ($this->confirm("Delete {$count} records older than {$days} days?")) { Log::where('created_at', '<', $date)->delete(); $this->info("Deleted {$count} records."); } else { $this->info('Operation cancelled.'); } return Command::SUCCESS; } } ?>

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

"Deleted 150 records."

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

  • команда make:controller,
    которая создаёт новый контроллер
  • команда make:model,
    которая создаёт новую модель Eloquent
  • команда make:job,
    которая создаёт новый класс задания для очереди
  • класс Command,
    базовый класс для всех пользовательских команд Artisan
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить