Trenutno dejavna stran: start » sl » Interna dokumentacija » Razširitve DokuWikija (WvdS) » Core » Hitri začetek: prijava prve storitve in njen priklic

Hitri začetek: prijava prve storitve in njen priklic

Najkrajša pot od „vtičnik je nameščen“ do „lastna storitev stoji v registru in jo najde drugo mesto“. Trije koraki, približno petnajst minut. Ta stran je namenjena razvijalcem lastnih vtičnikov.

Predpogoji

  • wkcore je nameščen in vklopljen v upravitelju razširitev.
  • Lasten vtičnik s komponento dejanja (action.php) ali mesto, kamor jo lahko dodate.
  • PHP 8.2 ali novejši.
  • Za korak 3 (preverbo): smete urejati conf/local.php.

Korak 1: priklopite se na dogodek prijave

WKCORE_REGISTER_SERVICES je edini trenutek, v katerem register pričakuje zapis.

use dokuwiki\Extension\ActionPlugin;
use dokuwiki\Extension\Event;
use dokuwiki\Extension\EventHandler;
 
class action_plugin_mojvticnik 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('mojvticnik.pozdrav', new Pozdrav());
    }
}

Izberite oznako, ki se začne s predpono vašega vtičnika. Oznake so ploščat imenski prostor brez preverjanja trkov; predpona je edino, kar loči dva vtičnika.

Če je storitev draga za izgradnjo ali potrebna redko, prijavite namesto nje tovarno. Ta se izvede ob prvem get() in nikoli več:

$registry->registerFactory('mojvticnik.porocilo', static function () {
    return new DragoPorocilo();
});

Korak 2: prevzemite jo z drugega mesta

Prek DokuWikijevega nalagalnika vtičnikov — ne z uvozom razredov iz wkcore:

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

Obe preverbi sta hišna navada in si zaslužita svoje mesto: vaš vtičnik se še naprej naloži, kadar wkcore manjka, in še naprej deluje, kadar pričakovana storitev ni bila nikoli prijavljena. Nobeden od teh dveh primerov ne upravičuje prekinitve.

Korak 3: poglejte, kaj je prijavljeno

Diagnostični pogled je izklopljen, dokler DokuWikijeva nastavitev allowdebug ni vklopljena — tedaj javi samo wkcore diagnostics require $conf['allowdebug'] = 1. Nastavite v conf/local.php:
$conf['allowdebug'] = 1;

in vrstico po preverbi spet odstranite. Pogled razkriva notranjost namestitve.

Nato odprite /doku.php?do=wkcore_diag.

Preverjanje rezultata

Pogled našteje vsako prijavljeno oznako, ali je vrednost ali tovarna, in za tovarne, ali so bile v tem klicu že razrešene.

  • mojvticnik.pozdrav stoji tam kot vrednost.
  • mojvticnik.porocilo stoji tam kot še nerazrešena tovarna. Pokličite get('mojvticnik.porocilo') enkrat in znova naložite: zdaj je razrešena.

Prav zato je pogled tu. Napačno zapisana oznaka nikjer ni napaka — je null iz get(). Tukaj vidite, kako se v resnici imenuje.

Naslednji korak

  • wkstorage — prva storitev, ki jo boste najverjetneje uporabili.
  • wkcore (v nemščini) — stran paketa: vse metode registra, trije dogodki in njihova obstojnost.
sl/wiki/dwe/wkcore/quickstart.txt · Zadnja sprememba: uporabnika 0.0.0.0