Hitri začetek: prijava prve storitve in njena uporaba
Najkrajša pot od »vtičnik je nameščen« do »lastna storitev je v registru in jo najde druga koda«. Trije koraki, približno petnajst minut. Ta stran je namenjena razvijalcem lastnih vtičnikov.
Predpogoji
wkcoreje 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 (preverjanje): 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: pridobite jo drugje v kodi
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 preverjanji 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
allowdebug ni vklopljena – tedaj pokaže samo wkcore diagnostics require $conf['allowdebug'] = 1. Nastavite v conf/local.php:$conf['allowdebug'] = 1;
in vrstico po preverjanju 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 pri tovarnah, ali so bile pri tej zahtevi že razrešene.
mojvticnik.pozdravje naveden kot vrednost.mojvticnik.porociloje naveden kot še nerazrešena tovarna. Pokličiteget('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.