/** * @return ConfigFactory */ public static function getDefaultInstance() { if (!self::$self) { self::$self = new self(); global $wgConfigRegistry; foreach ($wgConfigRegistry as $name => $callback) { self::$self->register($name, $callback); } } return self::$self; }
/** * @covers ConfigFactory::makeConfig */ public function testMakeConfigWithInvalidCallback() { $factory = new ConfigFactory(); $factory->register('unittest', function () { return true; // Not a Config object }); $this->setExpectedException('UnexpectedValueException'); $factory->makeConfig('unittest'); }
return $services->getDBLoadBalancerFactory()->getMainLB(); }, 'SiteStore' => function (MediaWikiServices $services) { $rawSiteStore = new DBSiteStore($services->getDBLoadBalancer()); // TODO: replace wfGetCache with a CacheFactory service. // TODO: replace wfIsHHVM with a capabilities service. $cache = wfGetCache(wfIsHHVM() ? CACHE_ACCEL : CACHE_ANYTHING); return new CachingSiteStore($rawSiteStore, $cache); }, 'SiteLookup' => function (MediaWikiServices $services) { // Use the default SiteStore as the SiteLookup implementation for now return $services->getSiteStore(); }, 'ConfigFactory' => function (MediaWikiServices $services) { // Use the bootstrap config to initialize the ConfigFactory. $registry = $services->getBootstrapConfig()->get('ConfigRegistry'); $factory = new ConfigFactory(); foreach ($registry as $name => $callback) { $factory->register($name, $callback); } return $factory; }, 'MainConfig' => function (MediaWikiServices $services) { // Use the 'main' config from the ConfigFactory service. return $services->getConfigFactory()->makeConfig('main'); }, 'InterwikiLookup' => function (MediaWikiServices $services) { global $wgContLang; // TODO: manage $wgContLang as a service $config = $services->getMainConfig(); return new ClassicInterwikiLookup($wgContLang, ObjectCache::getMainWANInstance(), $config->get('InterwikiExpiry'), $config->get('InterwikiCache'), $config->get('InterwikiScopes'), $config->get('InterwikiFallbackSite')); }, 'StatsdDataFactory' => function (MediaWikiServices $services) { return new BufferingStatsdDataFactory(rtrim($services->getMainConfig()->get('StatsdMetricPrefix'), '.')); }, 'EventRelayerGroup' => function (MediaWikiServices $services) { return new EventRelayerGroup($services->getMainConfig()->get('EventRelayerConfig')); }, 'SearchEngineFactory' => function (MediaWikiServices $services) {
/** * @param ConfigFactory $oldFactory * @param Config[] $configurations * * @return Closure */ private static function makeTestConfigFactoryInstantiator(ConfigFactory $oldFactory, array $configurations) { return function (MediaWikiServices $services) use($oldFactory, $configurations) { $factory = new ConfigFactory(); // clone configurations from $oldFactory that are not overwritten by $configurations $namesToClone = array_diff($oldFactory->getConfigNames(), array_keys($configurations)); foreach ($namesToClone as $name) { $factory->register($name, $oldFactory->makeConfig($name)); } foreach ($configurations as $name => $config) { $factory->register($name, $config); } return $factory; }; }