Erweitert

Benutzerdefinierten CLI-Befehl erstellen

Mit hostware-Modulen kannst Du ganz einfach CLI-Befehle erstellen, die mit php artisan oder als geplante Aufgabe ausgeführt werden können. Das hat außerdem den Vorteil, dass sich geplante Aufgaben genauso leicht debuggen lassen wie das Ausführen des von Dir erstellten Befehls.

hostware verwendet die Standardbefehle des Laravel Framework. Wirf einen Blick in die offizielle Dokumentation!

Einen Befehl erstellen

Ein Befehl ist eine Klassendatei, die im Verzeichnis /Console/COMMANDNAME.php gespeichert wird und folgendermaßen aussieht:

Console/CheckInstallingProducts.php

<?php

namespace custom\modules\DashservVps\Console;

class CheckInstallingProducts extends Command
{
    // The unique name of the command which will be used for execution
    protected $name = 'dashservvps:checkInstallingProducts';
    
    // A small description of what the command will do
    protected $description = 'Checks pending hosting products for installation';

    public function __construct()
    {
        parent::__construct();
    }

    // This function will execute once the command will be executed. You can perform anything inside!
    public function handle()
    {
        // YOUR CODE    
    }
}

Die Datei und der Klassenname sollten identisch sein. Du kannst den Befehl jetzt über den in ihm definierten $name ausführen. Bitte verwende Deinen Modulnamen als Präfix und nach dem : kannst Du den Namen Deiner Klasse als Namen des Befehls verwenden.

Befehl registrieren

Um den Befehl Deines Moduls zu registrieren, öffne bitte die Klasse ServiceProvider Deines Moduls im Verzeichnis /Providers/ (in diesem Fall /Providers/DashservVpsServiceProvider.php)

Diese Datei könnte standardmäßig folgendermaßen aussehen:

<?php

namespace custom\modules\DashservVps\Providers;

use App\Framework\Module\HwModuleServiceProvider;

class DashservVpsServiceProvider extends HwModuleServiceProvider {

}

Um den Befehl zu registrieren, füge die Funktion boot() hinzu und registriere die Klasse Deines Befehls. Danach sollte die Datei so aussehen:

<?php

namespace custom\modules\DashservVps\Providers;

use App\Framework\Module\HwModuleServiceProvider;
use custom\modules\DashservVps\Console\CheckInstallingProducts;
use Illuminate\Console\Scheduling\Schedule;

class DashservVpsServiceProvider extends HwModuleServiceProvider {
	public function boot() {
		parent::boot();

		$this->commands([
			CheckInstallingProducts::class // <-- Add the class of your command here!
		]);
	}
}

Befehl ausführen

Du kannst den Befehl jetzt in Deinem hostware-Stammverzeichnis ausführen, indem Du php artisan COMMANDNAME aufrufst. Wenn Du einfach php artisan ausführst, erhältst Du einen Überblick über alle registrierten Befehle.

In diesem Fall müsstest Du dashservvps:checkInstallingProducts mit php artisan ausführen, wodurch dann der Code innerhalb der Funktion handle() ausgeführt wird.

Als geplante Aufgabe ausführen

Erfahre hier, wie Du den Befehl als geplante Aufgabe in vordefinierten Intervallen ausführst.

War das hilfreich?