6 use InvalidArgumentException;
7 use Wikimedia\Assert\Assert;
42 foreach (
$keys as $key ) {
43 foreach ( $sources as
$source ) {
46 $this->options[$key] =
$source->get( $key );
50 if ( array_key_exists( $key,
$source ) ) {
51 $this->options[$key] =
$source[$key];
56 throw new InvalidArgumentException(
"Key \"$key\" not found in input sources" );
67 if ( $this->keys !== $expectedKeys ) {
68 $extraKeys = array_diff( $this->keys, $expectedKeys );
69 $missingKeys = array_diff( $expectedKeys, $this->keys );
70 Assert::precondition( !$extraKeys && !$missingKeys,
73 ?
'Unsupported options passed: ' . implode(
', ', $extraKeys ) .
'!'
75 ) . ( $extraKeys && $missingKeys ?
' ' :
'' ) . (
77 ?
'Required options missing: ' . implode(
', ', $missingKeys ) .
'!'
88 public function get( $key ) {
89 if ( !array_key_exists( $key, $this->options ) ) {
90 throw new InvalidArgumentException(
"Unrecognized option \"$key\"" );
92 return $this->options[$key];