1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 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
- Object caches
|