Richard Alan wrote:
I thought I had read somewhere that it was not a good idea to set function hooks inside of a class in this way. what follows is just one of many examples out there:
$wgExtensionFunctions[] = 'wfSetupCSS'
function wfSetupCSS() { global $wgCSS; $wgCSS = new CSS(); }
class CSS {
function CSS() { global $wgParser, $wgCSSMagic; $wgParser->setFunctionHook($wgCSSMagic, array($this, 'magicCss')); }
Any other suggestions on how to implement this type of functionality. Would it be better not to instantiate the CSS class and just use a static class with a function to set the hook like this:
$wgExtensionFunctions[] = 'CSS::SetupCSS'
Where SetupCSS was a static function to set the hook.
For recent versions of MediaWiki use the ParserFirstCallInit hook:
$wgHooks['ParserFirstCallInit'][] = 'wfCSSFirstCallInit'; function wfCSSFirstCallInit( &$parser ) { global $wgCSSMagic, $wgCSS; $parser->setFunctionHook($wgCSSMagic, array($wgCSS, 'magicCss')) }
But don't call your class name "CSS" and don't name the global $wgCSS, use something less likely to be broken by future conflicting changes in the MediaWiki core or in PHP. And don't use a configurable magic word name, just use a string literal.
-- Tim Starling