Services: Convert PasswordReset's static to a const now HHVM is gone
[lhc/web/wiklou.git] / includes / ServiceWiring.php
index 689a98e..6c0748c 100644 (file)
  * 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.
@@ -100,7 +107,7 @@ return [
                        $services->getDBLoadBalancerFactory(),
                        $services->getExternalStoreAccess(),
                        $services->getMainWANObjectCache(),
-                       new ServiceOptions( BlobStoreFactory::$constructorOptions,
+                       new ServiceOptions( BlobStoreFactory::CONSTRUCTOR_OPTIONS,
                                $services->getMainConfig() ),
                        $services->getContentLanguage()
                );
@@ -109,9 +116,10 @@ return [
        'BlockManager' => function ( MediaWikiServices $services ) : BlockManager {
                return new BlockManager(
                        new ServiceOptions(
-                               BlockManager::$constructorOptions, $services->getMainConfig()
+                               BlockManager::CONSTRUCTOR_OPTIONS, $services->getMainConfig()
                        ),
-                       $services->getPermissionManager()
+                       $services->getPermissionManager(),
+                       LoggerFactory::getInstance( 'BlockManager' )
                );
        },
 
@@ -199,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 {
@@ -266,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()
                        );
@@ -514,6 +521,17 @@ return [
                );
        },
 
+       'PasswordReset' => function ( MediaWikiServices $services ) : PasswordReset {
+               $options = new ServiceOptions( PasswordReset::CONSTRUCTOR_OPTIONS, $services->getMainConfig() );
+               return new PasswordReset(
+                       $options,
+                       AuthManager::singleton(),
+                       $services->getPermissionManager(),
+                       $services->getDBLoadBalancer(),
+                       LoggerFactory::getInstance( 'authentication' )
+               );
+       },
+
        'PerDbNameStatsdDataFactory' =>
        function ( MediaWikiServices $services ) : StatsdDataFactoryInterface {
                $config = $services->getMainConfig();
@@ -527,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(),
@@ -632,7 +650,7 @@ return [
                        $services->getCommentStore(),
                        $services->getActorMigration(),
                        $config->get( 'MultiContentRevisionSchemaMigrationStage' ),
-                       LoggerFactory::getProvider(),
+                       LoggerFactory::getInstance( 'RevisionStore' ),
                        $config->get( 'ContentHandlerUseDB' )
                );
 
@@ -783,7 +801,8 @@ return [
                        $services->getDBLoadBalancer(),
                        $services->getCommentStore(),
                        $services->getActorMigration(),
-                       $services->getWatchedItemStore()
+                       $services->getWatchedItemStore(),
+                       $services->getPermissionManager()
                );
        },