X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FServiceWiring.php;h=c7ad75c127bbec027f72bb97934e1e2e77e975a4;hb=755ac5f3e91511ade53c8dd692fdcece60c35498;hp=740377c027733beaf97b4609245e9a8c8b74a75e;hpb=e3e33ce99c909103b4b2b861c8361729441eccc8;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php index 740377c027..4692d05ca9 100644 --- a/includes/ServiceWiring.php +++ b/includes/ServiceWiring.php @@ -27,6 +27,13 @@ * For every service that MediaWiki core requires, an instantiator must be defined in * this file. * + * Note that, ideally, all information used to instantiate service objects should come + * from configuration. Information derived from the current request is acceptable, but + * only where there is no feasible alternative. It is preferred that such information + * (like the client IP, the acting user's identity, requested title, etc) be passed to + * the service object's methods as parameters. This makes the flow of information more + * obvious, and makes it easier to understand the behavior of services. + * * @note As of version 1.27, MediaWiki is only beginning to use dependency injection. * The services defined here do not yet fully represent all services used by core, * much of the code still relies on global state for this accessing services. @@ -77,9 +84,7 @@ use Wikimedia\ObjectFactory; return [ 'ActorMigration' => function ( MediaWikiServices $services ) : ActorMigration { - return new ActorMigration( - $services->getMainConfig()->get( 'ActorTableSchemaMigrationStage' ) - ); + return new ActorMigration( SCHEMA_COMPAT_NEW ); }, 'BadFileLookup' => function ( MediaWikiServices $services ) : BadFileLookup { @@ -109,14 +114,12 @@ return [ }, 'BlockManager' => function ( MediaWikiServices $services ) : BlockManager { - $context = RequestContext::getMain(); return new BlockManager( new ServiceOptions( BlockManager::$constructorOptions, $services->getMainConfig() ), - $context->getUser(), - $context->getRequest(), - $services->getPermissionManager() + $services->getPermissionManager(), + LoggerFactory::getInstance( 'BlockManager' ) ); }, @@ -204,10 +207,7 @@ return [ ); $class = MWLBFactory::getLBFactoryClass( $lbConf ); - $instance = new $class( $lbConf ); - MWLBFactory::setSchemaAliases( $instance, $mainConfig->get( 'DBtype' ) ); - - return $instance; + return new $class( $lbConf ); }, 'EventRelayerGroup' => function ( MediaWikiServices $services ) : EventRelayerGroup { @@ -271,6 +271,8 @@ return [ if ( defined( 'MW_NO_SESSION' ) ) { return $services->getLinkRendererFactory()->create(); } else { + // Normally information from the current request would not be passed in here; + // this is an exception. (See also the class documentation.) return $services->getLinkRendererFactory()->createForUser( RequestContext::getMain()->getUser() ); @@ -519,6 +521,17 @@ return [ ); }, + 'PasswordReset' => function ( MediaWikiServices $services ) : PasswordReset { + $options = new ServiceOptions( PasswordReset::$constructorOptions, $services->getMainConfig() ); + return new PasswordReset( + $options, + AuthManager::singleton(), + $services->getPermissionManager(), + $services->getDBLoadBalancer(), + LoggerFactory::getInstance( 'authentication' ) + ); + }, + 'PerDbNameStatsdDataFactory' => function ( MediaWikiServices $services ) : StatsdDataFactoryInterface { $config = $services->getMainConfig(); @@ -532,7 +545,7 @@ return [ 'PermissionManager' => function ( MediaWikiServices $services ) : PermissionManager { return new PermissionManager( new ServiceOptions( - PermissionManager::$constructorOptions, $services->getMainConfig() + PermissionManager::CONSTRUCTOR_OPTIONS, $services->getMainConfig() ), $services->getSpecialPageFactory(), $services->getRevisionLookup(), @@ -547,7 +560,8 @@ return [ $services->getContentLanguage(), AuthManager::singleton(), $services->getLinkRendererFactory()->create(), - $services->getNamespaceInfo() + $services->getNamespaceInfo(), + $services->getPermissionManager() ); $factory->setLogger( LoggerFactory::getInstance( 'preferences' ) ); @@ -636,7 +650,7 @@ return [ $services->getCommentStore(), $services->getActorMigration(), $config->get( 'MultiContentRevisionSchemaMigrationStage' ), - LoggerFactory::getProvider(), + LoggerFactory::getInstance( 'RevisionStore' ), $config->get( 'ContentHandlerUseDB' ) ); @@ -734,7 +748,8 @@ return [ return new SpecialPageFactory( new ServiceOptions( SpecialPageFactory::$constructorOptions, $services->getMainConfig() ), - $services->getContentLanguage() + $services->getContentLanguage(), + $services->getObjectFactory() ); }, @@ -786,7 +801,8 @@ return [ $services->getDBLoadBalancer(), $services->getCommentStore(), $services->getActorMigration(), - $services->getWatchedItemStore() + $services->getWatchedItemStore(), + $services->getPermissionManager() ); },