* class Extension { ... }
* function myExtension() { new Extension; }
*
*
* 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:
*
*
* function myExtension() {
* class Extension { ... }
* new PersistentObject( new Extension );
* }
*
*
* 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:
*
*
* $wgParser->setHook( 'tag' , array( &$this, 'tagFunc' ) );
*
*
* And have it work as expected
*
* @package MediaWiki
* @subpackage Extensions
*
* @author Ævar Arnfjörð Bjarmason
* @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;
}
}