public function __construct(array $options = [])
{
// check for options given but not supported
if (($unsupportedOptions = array_diff_key($options, $this->supportedOptions)) !== []) {
throw new InvalidValidationOptionsException('Unsupported validation option(s) found: ' . implode(', ', array_keys($unsupportedOptions)), 1339079804);
}
// check for required options being set
array_walk($this->supportedOptions, function ($supportedOptionData, $supportedOptionName, $options) {
if (isset($supportedOptionData[3]) && !array_key_exists($supportedOptionName, $options)) {
throw new InvalidValidationOptionsException('Required validation option not set: ' . $supportedOptionName, 1339163922);
}
}, $options);
// merge with default values
$this->options = array_merge(array_map(function ($value) {
return $value[0];
}, $this->supportedOptions), $options);
$this->validators = new \SplObjectStorage();
}