/** * Populates the contents of the Object * @param array $data * @return bool */ public function populate(array $data = array()) : bool { $valid = $invalid = array(); if (!empty($data)) { $structure = $this->structure(); $data = $structure->swapForeignKeys($data); foreach ($data as $key => $val) { if ($this->_process($key, $val)) { $valid[$key] = $val; } else { $invalid[$key] = $val; } } } $this->_setPopulating(true); $ret = parent::populate($valid); foreach ($invalid as $key => $val) { $this->_set($key, $val, null); } $this->_setPopulating(false); return $ret; }