44 public function __construct( $domain, array $lockManagerConfigs ) {
47 foreach ( $lockManagerConfigs as $config ) {
48 $config[
'domain'] = $this->domain;
49 if ( !isset( $config[
'name'] ) ) {
50 throw new InvalidArgumentException(
"Cannot register a lock manager with no name." );
52 $name = $config[
'name'];
53 if ( !isset( $config[
'class'] ) ) {
54 throw new InvalidArgumentException(
"Cannot register lock manager `{$name}` with no class." );
56 $class = $config[
'class'];
57 unset( $config[
'class'] );
58 $this->managers[$name] = [
73 public function get( $name ) {
74 if ( !isset( $this->managers[$name] ) ) {
75 throw new InvalidArgumentException(
"No lock manager defined with the name `$name`." );
78 if ( !isset( $this->managers[$name][
'instance'] ) ) {
79 $class = $this->managers[$name][
'class'];
80 '@phan-var string $class';
81 $config = $this->managers[$name][
'config'];
82 $config[
'logger'] = LoggerFactory::getInstance(
'LockManager' );
84 $this->managers[$name][
'instance'] =
new $class( $config );
87 return $this->managers[$name][
'instance'];