What is the recommended way to get a parser tag like <foo> and another hook 
callback to communicate or have a shared state? Here's a simple use case:

1.      Use a <foo> parser tag to generate some wikitext
2.      Use the SkinAfterBottomScripts hook to inject that wikitext at the 
bottom of the page

In this case, what's the best way for the callbacks for <foo> and 
SkinAfterBottomScripts to share information (in this case, the generated 
wikitext)? I can think of a few places that <foo> could put its generated 
wikitext for SkinAfterBottomScripts to access :

Method 1: Put the two callbacks in the same class and create a static variable 
to hold the wikitext.  I don't like this method because it feels like an 
ancient "shared memory" solution (with all the usual pitfalls & risks).

Method 2: Create a custom property in the ParserOutput object 
($parser->mOutput) and hang the generated wikitext there. This feels a little 
better, but unfortunately the parameter list for the SkinAfterBottomScripts 
hook doesn't include a Parser or ParserOutput object, so it can't access the 
data. (Theoretically one could use $wgParser, but when I tried this, something 
in between deleted my custom property.)

This is just one example. The real question is: what's the best practice for 
sharing data/state between two callbacks in a MediaWiki extension?

Thank you very much.
DanB


_______________________________________________
MediaWiki-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-l

Reply via email to