1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
<?php
namespace MediaWiki\FileBackend\LockManager;
use LockManagerGroup;
/**
* Service to construct LockManagerGroups.
*/
class LockManagerGroupFactory {
/** @var string */
private $defaultDomain;
/** @var array */
private $lockManagerConfigs;
/** @var LockManagerGroup[] (domain => LockManagerGroup) */
private $instances = [];
/**
* Do not call directly, use MediaWikiServices.
*
* @param string $defaultDomain
* @param array $lockManagerConfigs In format of $wgLockManagers
*/
public function __construct( $defaultDomain, array $lockManagerConfigs ) {
$this->defaultDomain = $defaultDomain;
$this->lockManagerConfigs = $lockManagerConfigs;
}
/**
* @param string|null|false $domain Domain (usually wiki ID). false for the default (normally
* the current wiki's domain).
* @return LockManagerGroup
*/
public function getLockManagerGroup( $domain = false ): LockManagerGroup {
if ( $domain === false || $domain === null ) {
$domain = $this->defaultDomain;
}
if ( !isset( $this->instances[$domain] ) ) {
$this->instances[$domain] =
new LockManagerGroup( $domain, $this->lockManagerConfigs );
}
return $this->instances[$domain];
}
}
|