Прийом кількох параметрів у командах Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 27 червня, 2025
Знайомтеся з можливостями параметрів на основі масивів у командному рядку Laravel Artisan! Дізнайтеся, як спростити обробку кількох значень і перетворити прості команди на потужні інструменти для виконання складних операцій. Читайте далі, щоб виявити секрети ефективного управління даними
```html

Команди 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'
        ]);
    }
}

Підтримка параметрів масиву перетворює прості команди на потужні інструменти для пакетної обробки, що ідеально підходять для адміністративних завдань та управління даними

```