Merge "Reduce calls to MediaWikiServices::getInstance()"
[lhc/web/wiklou.git] / includes / ServiceWiring.php
index e2bc139..286dde1 100644 (file)
@@ -48,6 +48,7 @@ use MediaWiki\MediaWikiServices;
 use MediaWiki\Preferences\PreferencesFactory;
 use MediaWiki\Preferences\DefaultPreferencesFactory;
 use MediaWiki\Shell\CommandFactory;
+use MediaWiki\Special\SpecialPageFactory;
 use MediaWiki\Storage\BlobStore;
 use MediaWiki\Storage\BlobStoreFactory;
 use MediaWiki\Storage\NameTableStore;
@@ -56,7 +57,6 @@ use MediaWiki\Storage\RevisionLookup;
 use MediaWiki\Storage\RevisionStore;
 use MediaWiki\Storage\RevisionStoreFactory;
 use MediaWiki\Storage\SqlBlobStore;
-use Wikimedia\ObjectFactory;
 
 return [
        'ActorMigration' => function ( MediaWikiServices $services ) : ActorMigration {
@@ -367,9 +367,7 @@ return [
        },
 
        'Parser' => function ( MediaWikiServices $services ) : Parser {
-               $conf = $services->getMainConfig()->get( 'ParserConf' );
-               return ObjectFactory::constructClassInstance( $conf['class'],
-                       [ $conf, $services->getMagicWordFactory() ] );
+               return $services->getParserFactory()->create();
        },
 
        'ParserCache' => function ( MediaWikiServices $services ) : ParserCache {
@@ -383,6 +381,16 @@ return [
                );
        },
 
+       'ParserFactory' => function ( MediaWikiServices $services ) : ParserFactory {
+               return new ParserFactory(
+                       $services->getMainConfig()->get( 'ParserConf' ),
+                       $services->getMagicWordFactory(),
+                       $services->getContentLanguage(),
+                       wfUrlProtocols(),
+                       $services->getSpecialPageFactory()
+               );
+       },
+
        'PasswordFactory' => function ( MediaWikiServices $services ) : PasswordFactory {
                $config = $services->getMainConfig();
                return new PasswordFactory(
@@ -401,11 +409,12 @@ return [
        },
 
        'PreferencesFactory' => function ( MediaWikiServices $services ) : PreferencesFactory {
-               $authManager = AuthManager::singleton();
-               $linkRenderer = $services->getLinkRendererFactory()->create();
-               $config = $services->getMainConfig();
-               $factory = new DefaultPreferencesFactory( $config, $services->getContentLanguage(),
-                       $authManager, $linkRenderer );
+               $factory = new DefaultPreferencesFactory(
+                       $services->getMainConfig(),
+                       $services->getContentLanguage(),
+                       AuthManager::singleton(),
+                       $services->getLinkRendererFactory()->create()
+               );
                $factory->setLogger( LoggerFactory::getInstance( 'preferences' ) );
 
                return $factory;
@@ -538,6 +547,13 @@ return [
                );
        },
 
+       'SpecialPageFactory' => function ( MediaWikiServices $services ) : SpecialPageFactory {
+               return new SpecialPageFactory(
+                       $services->getMainConfig(),
+                       $services->getContentLanguage()
+               );
+       },
+
        'StatsdDataFactory' => function ( MediaWikiServices $services ) : IBufferingStatsdDataFactory {
                return new BufferingStatsdDataFactory(
                        rtrim( $services->getMainConfig()->get( 'StatsdMetricPrefix' ), '.' )
@@ -614,7 +630,8 @@ return [
                return new MediaWikiTitleCodec(
                        $services->getContentLanguage(),
                        $services->getGenderCache(),
-                       $services->getMainConfig()->get( 'LocalInterwikis' )
+                       $services->getMainConfig()->get( 'LocalInterwikis' ),
+                       $services->getInterwikiLookup()
                );
        },