account, current(array_values($array))); } $deal = new Deal(); foreach ($array as $name => $value) { $method = sprintf('set%s', ucfirst($name)); $deal->$method($value); } return $deal; } /** * Deals constructor. * * @param Account $account * @param array|Deal $input */ public function __construct(Account $account, $input) { $this->account = $account; if (is_array($input)) { foreach ($input as $item) { $this->append($item); } } if ($input instanceof Deal) { $this->append($input); } } public function append($value) { if (is_array($value)) { parent::append($this->parseArray($value)); } if ($value instanceof Deal) { parent::append($value); } } }