public function __construct($options = [], $callbacks = [])
{
if (is_array($options)) {
$this->_options = $options;
} else {
if ($options instanceof \Traversable) {
$this->_options = iterator_to_array($options);
} else {
throw new InvalidArgument('options', ['array', \Traversable::class]);
}
}
foreach ($callbacks as $name => $callback) {
$this->setCallback($name, $callback);
}
}