51 lines
1.5 KiB
PHP
51 lines
1.5 KiB
PHP
<?php
|
|
if ( ! defined( 'MEDIAWIKI' ) )
|
|
die();
|
|
/**
|
|
* Sometimes one wants to make an extension that defines a class that one wants
|
|
* to backreference somewhere else in the code, doing something like:
|
|
* <code>
|
|
* class Extension { ... }
|
|
* function myExtension() { new Extension; }
|
|
* </class>
|
|
*
|
|
* Won't work because PHP will destroy any reference to the initialized
|
|
* extension when the function goes out of scope, furthermore one might want to
|
|
* use some functions in the Extension class that won't exist by the time
|
|
* extensions get parsed which would mean lots of nasty workarounds to get
|
|
* around initialization and reference issues.
|
|
*
|
|
* This class allows one to write hir extension as:
|
|
*
|
|
* <code>
|
|
* function myExtension() {
|
|
* class Extension { ... }
|
|
* new PersistentObject( new Extension );
|
|
* }
|
|
* </code>
|
|
*
|
|
* The class will then not get parsed until everything is properly initialized
|
|
* and references to it won't get destroyed meaning that it's possible to do
|
|
* something like:
|
|
*
|
|
* <code>
|
|
* $wgParser->setHook( 'tag' , array( &$this, 'tagFunc' ) );
|
|
* </code>
|
|
*
|
|
* And have it work as expected
|
|
*
|
|
* @package MediaWiki
|
|
* @subpackage Extensions
|
|
*
|
|
* @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
|
|
* @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
|
|
*/
|
|
|
|
$wgPersistentObjects = array();
|
|
|
|
class PersistentObject {
|
|
function PersistentObject( &$obj ) {
|
|
$wgPersistentObjects[] = $obj;
|
|
}
|
|
}
|