append($deal); return $this; } /** * @param string[]|Deal[] $deals * * @return $this */ public function addDeals(array $deals) { array_walk($deals, function(&$deal) { if (is_string($deal)) { $deal = Deal::fromURL($this->account, $deal); } }); foreach ($deals as $deal) { $this->append($deal); } return $this; } /** * @param string[]|Deal[] $deals * * @return $this */ public function setDeals(array $deals) { array_walk($deals, function(&$deal) { if (is_string($deal)) { $deal = Deal::fromURL($this->account, $deal); } }); $this->exchangeArray($deals); return $this; } /** * @param Account $account * * @return Deals */ public function setAccount($account) { $this->account = $account; return $this; } /** * @param mixed $value */ public function append($value) { if (is_array($value)) { parent::append($this->parseArray($value)); } if ($value instanceof Deal) { parent::append($value); } } /** * @param array $array * * @return Deal */ private function parseArray(array $array = []) { if (count($array) == 1) { return Deal::fromURL($this->account, current(array_values($array))); } $deal = new Deal(); foreach ($array as $name => $value) { $method = sprintf('set%s', ucfirst($name)); $deal->$method($value); } return $deal; } }