summaryrefslogtreecommitdiff
path: root/www/wiki/docs/globals.txt
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/docs/globals.txt')
-rw-r--r--www/wiki/docs/globals.txt67
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