public function __construct($defaults = [])
{
if (!is_array($defaults)) {
throw new Exception(['Field requires array for defaults', 'arg' => $defaults]);
}
foreach ($defaults as $key => $val) {
if (is_array($val)) {
$this->{$key} = array_merge(isset($this->{$key}) && is_array($this->{$key}) ? $this->{$key} : [], $val);
} else {
$this->{$key} = $val;
}
}
}