$newInstance->redefineService( $name, $callback );
}
+ self::resetGlobalParser();
+
return $newInstance;
}
);
MediaWikiServices::forceGlobalInstance( $newServices );
+
+ self::resetGlobalParser();
+
return $newServices;
}
MediaWikiServices::forceGlobalInstance( self::$originalServices );
$currentServices->destroy();
+ self::resetGlobalParser();
+
return true;
}
+ /**
+ * If $wgParser has been unstubbed, replace it with a fresh one so it picks up any config
+ * changes. $wgParser is deprecated, but we still support it for now.
+ */
+ private static function resetGlobalParser() {
+ // phpcs:ignore MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgParser
+ global $wgParser;
+ if ( $wgParser instanceof StubObject ) {
+ return;
+ }
+ $wgParser = new StubObject( 'wgParser', function () {
+ return MediaWikiServices::getInstance()->getParser();
+ } );
+ }
+
/**
* @since 1.27
* @param string|Language $lang