/** * Properly loads an associative array of properties into the object * - decrypts ides * - creates objects * @param array $array * @return Model $this * @throws \InvalidArgumentException if non associative array */ public function loadArray($array = array()) { $array = $array ?: $_POST; if (!$array) { return $this; } if (!\is_assoc($array)) { throw new \InvalidArgumentException(' loadArray() expects an associative array argument'); } foreach ($array as $k => $v) { if ($this->isObjectParam($k)) { $obj = $this->getActualObjectName($k); \aql::include_class_by_name($obj); $loader = function ($var) use($obj) { if (!is_array($var)) { return $var; } $tmp = class_exists($obj) ? new $obj() : new Model(null, $obj); return $tmp->loadArray($var); }; $v = $this->isPluralObject($k) ? array_map($loader, $v) : $loader($v); } $this->{$k} = $v; } return $this; }