public function __construct(array $data = []) { $defaults = typeManager::getDefaults(\get_called_class()); if (\is_array($defaults)) { $data = \array_replace($defaults, $data); } $exists = isset($data['_id']) && null !== $data['_id']; if ($exists) { $this->_data = $exists ? $data : []; $this->_dirty = $exists ? [] : $data; } else { foreach ($data as $k => $v) { $this->{$k} = $v; } } }