Sie befinden sich hier: start » de » Interne Dokumentation » DokuWiki-Erweiterungen (WvdS) » Core Plugin » Schnelleinstieg: Den ersten Dienst anmelden und abrufen

Schnelleinstieg: Den ersten Dienst anmelden und abrufen

Der kürzeste Weg von „Plugin ist installiert“ zu „ein eigener Dienst steht in der Registry und wird von anderer Stelle gefunden“. Drei Schritte, etwa fünfzehn Minuten. Diese Anleitung richtet sich an Entwickler eigener Plugins.

Voraussetzungen

  • wkcore ist installiert und im Erweiterungsmanager aktiviert.
  • Ein eigenes Plugin mit einer Aktions-Komponente (action.php), oder eine Stelle, an der Sie eine anlegen können.
  • PHP 8.2 oder neuer.
  • Für Schritt 3 (Prüfung): Sie dürfen conf/local.php ändern.

Schritt 1: Am Registrierungsereignis anmelden

WKCORE_REGISTER_SERVICES ist der einzige Zeitpunkt, zu dem die Registry beschrieben werden soll.

use dokuwiki\Extension\ActionPlugin;
use dokuwiki\Extension\Event;
use dokuwiki\Extension\EventHandler;
 
class action_plugin_meinplugin extends ActionPlugin
{
    public function register(EventHandler $controller)
    {
        $controller->register_hook('WKCORE_REGISTER_SERVICES', 'BEFORE', $this, 'onRegisterServices');
    }
 
    public function onRegisterServices(Event $event)
    {
        $registry = $event->data;
        $registry->register('meinplugin.gruss', new Gruss());
    }
}

Wählen Sie eine Kennung, die mit dem Namen Ihres Plugins beginnt. Kennungen sind ein flacher Namensraum ohne Kollisionsprüfung; das Präfix ist das Einzige, was zwei Plugins auseinanderhält.

Ist der Dienst teuer zu bauen oder nur selten nötig, melden Sie stattdessen eine Fabrik an. Sie läuft beim ersten get() und danach nie wieder:

$registry->registerFactory('meinplugin.bericht', static function () {
    return new TeurerBericht();
});

Schritt 2: Ihn von anderer Stelle abrufen

Über DokuWikis Plugin-Lader, nicht durch Import der Klassen von wkcore:

$core = plugin_load('helper', 'wkcore');
if (is_object($core) && method_exists($core, 'get')) {
    $gruss = $core->get('meinplugin.gruss');
    if ($gruss !== null) {
        echo $gruss->sagHallo();
    }
}

Die beiden Prüfungen sind Hausbrauch und verdienen ihren Platz: Ihr Plugin lädt weiter, wenn wkcore fehlt, und arbeitet weiter, wenn ein erwarteter Dienst nie angemeldet wurde. Keiner der beiden Fälle rechtfertigt einen Abbruch.

Schritt 3: Nachsehen, was angemeldet ist

Die Diagnoseansicht ist ausgeschaltet, solange DokuWikis Einstellung allowdebug nicht gesetzt ist — sie meldet dann nur wkcore diagnostics require $conf['allowdebug'] = 1. Setzen Sie in conf/local.php:
$conf['allowdebug'] = 1;

und nehmen Sie die Zeile nach der Prüfung wieder heraus. Die Ansicht legt Innereien der Installation offen.

Öffnen Sie danach /doku.php?do=wkcore_diag.

Ergebnis prüfen

Die Ansicht führt jede angemeldete Kennung auf, dazu ob sie ein Wert oder eine Fabrik ist und ob eine Fabrik in diesem Aufruf bereits aufgelöst wurde.

  • meinplugin.gruss steht als Wert darin.
  • meinplugin.bericht steht als noch nicht aufgelöste Fabrik darin. Rufen Sie get('meinplugin.bericht') einmal auf und laden Sie neu: Jetzt ist sie aufgelöst.

Genau dafür ist die Ansicht da: Eine falsch geschriebene Kennung ist nirgends ein Fehler — sie ist ein null aus get(). Hier sehen Sie, wie sie wirklich heißt.

Nächster Schritt

  • wkcore — Referenz: alle Methoden der Registry, die drei Ereignisse und ihre Beständigkeit.
  • wkstorage — der erste Dienst, den Sie vermutlich verbrauchen werden.
de/wiki/dwe/wkcore/quickstart.txt · Zuletzt geändert: von 0.0.0.0