Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама
Middle Artisan

Як викликати команду Artisan з коду і коли це доречно?

$exitCode = Artisan::call('reports:send', ['user' => 7, '--queue' => true]);
$output   = Artisan::output();

Artisan::queue('reports:send', ['user' => 7])->onQueue('reports');   // у черзі

Artisan::call() виконує команду синхронно в поточному процесі й повертає код виходу. Artisan::queue() ставить виконання в чергу.

З іншої команди - $this->call('cache:clear') або $this->callSilently() без виводу.

Коли це доречно:

  • адмін-кнопка «перебудувати індекс», що запускає наявну команду;
  • команда-оркестратор, яка по черзі викликає інші;
  • тести консольних команд.

Коли краще інакше: якщо логіку з команди потрібно викликати з контролера, її виносять у клас (дію чи сервіс), який викликають і команда, і контролер. Команда - це інтерфейс для CLI з парсингом аргументів і виводом у консоль; тягнути цей шар у веб-запит означає зайве перетворення параметрів у рядки й назад.

Обережно з Artisan::call() у запиті: важка команда заблокує запит на весь час виконання. Для довгого - черга.

Докладніше в документації: Програмне виконання команд

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання