The service locator, MediaWikiServices, is intended to facilitate "manual" dependency injection in static entry points. See also the Dependency Injection RFC T384 and Service Locator RFC T124792 for details. The following key points were implemented according the discussion surrounding these RFCs: * a configurable DI container that allows extensions to add and replace services. * no auto-wiring, since it's prone to add confusion in large and complex applications. * no 3rd party framework, since they typically do too much. The following services in MediaWiki core are made accessible via the service locator mechanism to showcase the bootstrapping mechanism: * ConfigFactory and MainConfig * SiteLookup and SiteStore However, the implementation of these services was not yet converted to using proper DI throughout the code. Bug: T124792 Change-Id: I3c25c0ac17300d3dd13e1cf5100558a605eee15f
56 lines
1.3 KiB
PHP
56 lines
1.3 KiB
PHP
<?php
|
|
|
|
$basePath = getenv( 'MW_INSTALL_PATH' ) !== false ? getenv( 'MW_INSTALL_PATH' ) : __DIR__ . '/..';
|
|
|
|
require_once $basePath . '/maintenance/Maintenance.php';
|
|
|
|
/**
|
|
* Maintenance script for exporting site definitions from XML into the sites table.
|
|
*
|
|
* @since 1.25
|
|
*
|
|
* @licence GNU GPL v2+
|
|
* @author Daniel Kinzler
|
|
*/
|
|
class ExportSites extends Maintenance {
|
|
|
|
public function __construct() {
|
|
$this->addDescription( 'Exports site definitions the sites table to XML file' );
|
|
|
|
$this->addArg( 'file', 'A file to write the XML to (see docs/sitelist.txt). ' .
|
|
'Use "php://stdout" to write to stdout.', true
|
|
);
|
|
|
|
parent::__construct();
|
|
}
|
|
|
|
/**
|
|
* Do the actual work. All child classes will need to implement this
|
|
*/
|
|
public function execute() {
|
|
$file = $this->getArg( 0 );
|
|
|
|
if ( $file === 'php://output' || $file === 'php://stdout' ) {
|
|
$this->mQuiet = true;
|
|
}
|
|
|
|
$handle = fopen( $file, 'w' );
|
|
|
|
if ( !$handle ) {
|
|
$this->error( "Failed to open $file for writing.\n", 1 );
|
|
}
|
|
|
|
$exporter = new SiteExporter( $handle );
|
|
|
|
$siteLookup = \MediaWiki\MediaWikiServices::getInstance()->getSiteLookup();
|
|
$exporter->exportSites( $siteLookup->getSites() );
|
|
|
|
fclose( $handle );
|
|
|
|
$this->output( "Exported sites to " . realpath( $file ) . ".\n" );
|
|
}
|
|
|
|
}
|
|
|
|
$maintClass = 'ExportSites';
|
|
require_once RUN_MAINTENANCE_IF_MAIN;
|