* @link https://www.oxidmodule.com */ declare(strict_types=1); namespace D3\LinkmobilityClient\RecipientsList; use D3\LinkmobilityClient\Client; use D3\LinkmobilityClient\ValueObject\Recipient; use Iterator; class RecipientsList implements RecipientsListInterface, Iterator { /** * @var Client */ private $client; /** * @var array */ private $recipients = []; /** * @deprecated unused client parameter will remove * @param Client|null $client */ public function __construct(Client $client = null) { if ($client) { $this->setClient( $client ); } } /** * @param Recipient $recipient * * @return RecipientsListInterface */ public function add(Recipient $recipient): RecipientsListInterface { $this->recipients[ md5(serialize($recipient)) ] = $recipient; return $this; } /** * @return RecipientsListInterface */ public function clearRecipents(): RecipientsListInterface { $this->recipients = []; return $this; } /** * @return array */ public function getRecipients(): array { return array_values( array_map( function (Recipient $recipient) { return $recipient->getFormatted(); }, $this->recipients ) ); } /** * @return array */ public function getRecipientsList(): array { return $this->recipients; } /** * @return false|mixed */ public function current() { return current($this->recipients); } /** * @return false|mixed|void */ public function next() { return next($this->recipients); } public function key() { return key($this->recipients); } public function rewind() { reset($this->recipients); } public function valid(): bool { return current($this->recipients) instanceof Recipient; } /** * @deprecated * @return Client */ public function getClient(): Client { return $this->client; } /** * @deprecated * @param Client $client * * @return RecipientsList */ public function setClient(Client $client): RecipientsList { $this->client = $client; return $this; } }