Leitfaden

CLI

Befehle, Registrierung in YAML und Übergabe längerer Arbeit an die Queue.

Command erstellen

Ein Command implementiert CommandInterface mit name(), description() und run(array $args): int. Halte die Command-Klasse auf die Orchestrierung einer konkreten Aufgabe beschränkt.

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;
    }
}

Command registrieren und ausführen

Registriere Command-Klassen in app/Config/Commands.yaml. Verwende in der öffentlichen Dokumentation den einheitlichen Einstiegspunkt vendor/bin/lemonade, zum Beispiel vendor/bin/lemonade about.

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

CLI-Aufgaben und Queue

Verwende Commands für geplante oder manuell ausgelöste Arbeit. Übergib längere Folgearbeit als Queue Message und lasse sie von einem CLI-Worker abschließen.

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));
    }
}