diff options
Diffstat (limited to 'www/wiki/docs/globals.txt')
-rw-r--r-- | www/wiki/docs/globals.txt | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/www/wiki/docs/globals.txt b/www/wiki/docs/globals.txt new file mode 100644 index 00000000..5bdb31c1 --- /dev/null +++ b/www/wiki/docs/globals.txt @@ -0,0 +1,67 @@ +globals.txt + +Globals are evil. The original MediaWiki code relied on globals for processing +context far too often. MediaWiki development since then has been a story of +slowly moving context out of global variables and into objects. Storing +processing context in object member variables allows those objects to be reused +in a much more flexible way. Consider the elegance of: + + # Generate the article HTML as if viewed by a web request + $article = new Article( Title::newFromText( $t ) ); + $article->view(); + +versus + + # Save current globals + $oldTitle = $wgTitle; + $oldArticle = $wgArticle; + + # Generate the HTML + $wgTitle = Title::newFromText( $t ); + $wgArticle = new Article; + $wgArticle->view(); + + # Restore globals + $wgTitle = $oldTitle + $wgArticle = $oldArticle + +Some of the current MediaWiki developers have an idle fantasy that some day, +globals will be eliminated from MediaWiki entirely, replaced by an application +object which would be passed to constructors. Whether that would be an +efficient, convenient solution remains to be seen, but certainly PHP 5 makes +such object-oriented programming models easier than they were in previous +versions. + +For the time being though, MediaWiki programmers will have to work in an +environment with some global context. At the time of writing, 418 globals were +initialised on startup by MediaWiki. 304 of these were configuration settings, +which are documented in DefaultSettings.php. There is no comprehensive +documentation for the remaining 114 globals, however some of the most important +ones are listed below. They are typically initialised either in index.php or in +Setup.php. + +For a description of the classes, see design.txt. + +$wgTitle + Title object created from the request URL. + +$wgOut + OutputPage object for HTTP response. + +$wgUser + User object for the user associated with the current request. + +$wgLang + Language object selected by user preferences. + +$wgContLang + Language object associated with the wiki being viewed. + +$wgParser + Parser object. Parser extensions register their hooks here. + +$wgRequest + WebRequest object, to get request data + +$wgMemc, $messageMemc, $parserMemc + Object caches |