brightnucleus/chainmail

View on GitHub
src/Recipients.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php
/**
 * BrightNucleus ChainMail Component.
 *
 * @package   BrightNucleus/ChainMail
 * @author    Alain Schlesser <alain.schlesser@gmail.com>
 * @license   MIT
 * @link      http://www.brightnucleus.com/
 * @copyright 2016 Alain Schlesser, Bright Nucleus
 */

namespace BrightNucleus\ChainMail;

use BrightNucleus\ChainMail\Support\EmailAddress;
use Doctrine\Common\Collections\ArrayCollection;

/**
 * Class Recipients.
 *
 * @since   1.0.0
 *
 * @package BrightNucleus\ChainMail
 * @author  Alain Schlesser <alain.schlesser@gmail.com>
 */
class Recipients extends ArrayCollection
{

    /**
     * Instantiate a Recipients object.
     *
     * @param array $emails Array of email addresses and/or recipients.
     */
    public function __construct(array $emails)
    {
        parent::__construct([]);
        $this->add($emails);
    }

    /**
     * Add an email address to the Recipients collection.
     *
     * @param Recipients|EmailAddress|array|string $email Email address to add.
     *
     * @return static
     */
    public function add($email)
    {
        if ($email instanceof EmailAddress) {
            parent::add($email);

            return $this;
        }

        if (is_array($email) || $email instanceof Recipients) {
            array_walk($email, [$this, 'add']);

            return $this;
        }

        parent::add(new EmailAddress($email));

        return $this;
    }
}