filters = $filters; } public function __toString() { return $this->build(); } /** * Build XML for a set of filters. * * @return string */ private function build() { $prefix = ""; $suffix = ''; $xml = collect($this->filters)->map(function ($items) { return $this->buildEntry($items); })->implode(''); return $prefix . $xml . $suffix; } /** * Build XML for an filter. * * @param Filter $filter * * @return string */ private function buildEntry(Filter $filter) { $entry = collect($filter->getProperties())->map(function ($value, $key) { return $this->buildProperty($value, $key); })->implode(''); return "{$entry}"; } /** * Build XML for a property. * * @param string $value * @param string $key * * @return string */ private function buildProperty($value, $key) { if ($key == 'from') { $value = collect($value)->implode('|'); } return ""; } }