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
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 (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
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.pozdravstoji tam kot vrednost.mojvticnik.porocilostoji tam 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.