13use InvalidArgumentException;
39 foreach ( $lockManagerConfigs as $config ) {
41 if ( !isset( $config[
'name'] ) ) {
42 throw new InvalidArgumentException(
"Cannot register a lock manager with no name." );
44 $name = $config[
'name'];
45 if ( !isset( $config[
'class'] ) ) {
46 throw new InvalidArgumentException(
"Cannot register lock manager `{$name}` with no class." );
48 $class = $config[
'class'];
49 unset( $config[
'class'] );
50 $this->managers[$name] = [
65 public function get( $name ) {
66 if ( !isset( $this->managers[$name] ) ) {
67 throw new InvalidArgumentException(
"No lock manager defined with the name `$name`." );
70 if ( !isset( $this->managers[$name][
'instance'] ) ) {
71 $class = $this->managers[$name][
'class'];
72 '@phan-var class-string<LockManager> $class';
73 $config = $this->managers[$name][
'config'];
74 $config[
'logger'] = LoggerFactory::getInstance(
'LockManager' );
76 $this->managers[$name][
'instance'] =
new $class( $config );
79 return $this->managers[$name][
'instance'];
90 if ( !isset( $this->managers[$name] ) ) {
91 throw new InvalidArgumentException(
"No lock manager defined with the name `$name`." );
93 $class = $this->managers[$name][
'class'];
95 return [
'class' => $class ] + $this->managers[$name][
'config'];