Команди Laravel Artisan підтримують параметри у вигляді масивів, що дозволяє ефективно обробляти кілька значень одночасно. Ця функція спрощує виконання партійних операцій та складних командних потоків.
Використовуйте нотацію з зірочкою для приймання кількох значень аргументів:
protected $signature = 'process:files {filename*}';
Для необов'язкових кількох аргументів поєднайте знак запитання зі зірочкою:
protected $signature = 'process:files {filename?*}';
Кілька значень опцій дотримуються аналогічної структури, що дозволяє використовувати повторні прапори під час виконання команди.
protected $signature = 'process:files {--format=*}';
Ось система публікації контенту, яка демонструє повну обробку параметрів з кількома значеннями:
class PublishContent extends Command
{
protected $signature = 'content:publish
{articles*: ID статей для публікації}
{--C|category=*: Категорії для включення}
{--platform=*: Платформи для публікації}
{--schedule=?: Графік публікації}';
public function handle()
{
$articleIds = $this->argument('articles');
$categories = $this->option('category');
$platforms = $this->option('platform');
$schedule = $this->option('schedule');
$this->line("Обробляється " . count($articleIds) . " статей для публікації");
foreach ($articleIds as $articleId) {
$article = Article::findOrFail($articleId);
if ($categories && !in_array($article->category_id, $categories)) {
$this->warn("Пропускаємо статтю {$articleId} - невідповідність категорії");
continue;
}
foreach ($platforms as $platform) {
$this->publishToPlatform($article, $platform, $schedule);
$this->info("Статтю {$articleId} опубліковано на {$platform}");
}
}
$this->info("Процес публікації успішно завершено");
}
private function publishToPlatform($article, $platform, $schedule = null)
{
$publishedAt = $schedule ? Carbon::parse($schedule) : now();
Publication::create([
'article_id' => $article->id,
'platform' => $platform,
'published_at' => $publishedAt,
'status' => 'published'
]);
}
}
Підтримка параметрів масиву перетворює прості команди на потужні інструменти для пакетної обробки, що ідеально підходять для адміністративних завдань та управління даними
```