Guide

CLI

Commandes, enregistrement YAML et délégation des travaux longs à la queue.

Créer une commande

Une commande implémente CommandInterface avec name(), description() et run(array $args): int. Gardez la classe de commande centrée sur l’orchestration d’une tâche précise.

example.php
<?php

declare(strict_types=1);

namespace App\Console;

use Lemonade\Framework\Cli\CommandInterface;

final class AboutCommand implements CommandInterface
{
    public function name(): string
    {
        return 'about';
    }

    public function description(): string
    {
        return 'Display basic information about the application.';
    }

    public function run(array $args): int
    {
        unset($args);

        fwrite(STDOUT, "Application is running\n");

        return 0;
    }
}

Enregistrer et exécuter une commande

Enregistrez les classes de commande dans app/Config/Commands.yaml. Dans la documentation publique, utilisez le point d’entrée canonique vendor/bin/lemonade, par exemple vendor/bin/lemonade about.

example.php
module: commands
config:
  commands:
    - App\Console\AboutCommand

CLI, tâches et queue

Utilisez les commandes pour le travail planifié ou déclenché par un opérateur. Déléguez les traitements plus longs sous forme de queue message et laissez un worker CLI les terminer.

example.php
use Lemonade\Framework\Queue\QueueBusInterface;

final class PublishService
{
    public function __construct(
        private readonly QueueBusInterface $queue,
    ) {}

    public function publish(int $articleId): void
    {
        $this->queue->dispatch(new PublishArticleMessage($articleId));
    }
}