Via Composer:
$ composer require nepada/email-address
This package provides two implementations of email address value object:
RfcEmailAddress
- it adheres to RFCs and treats local part of email address as case sensitive. The domain part is normalized to lower case ASCII representation.CaseInsensitiveEmailAddress
- the only difference fromRfcEmailAddress
is that local part is considered case insensitive and normalized to lower case.
It is up to you to decide which implementation suites your needs. If you want to support both implementations, use Nepada\EmailAddress\EmailAddress
as a typehint. You can also cast one representation to the other using RfcEmailAddress::toCaseInsensitiveEmailAddress()
and CaseInsensitiveEmailAddress::toRfcEmailAddress()
.
$rfcEmailAddress = Nepada\EmailAddress\RfcEmailAddress::fromString('Real.example+suffix@HÁČKYčárky.cz');
$rfcEmailAddress = Nepada\EmailAddress\RfcEmailAddress::fromDomainAndLocalPart('HÁČKYčárky.cz', 'Real.example+suffix');
$ciEmailAddress = Nepada\EmailAddress\CaseInsensitiveEmailAddress::fromString('Real.example+suffix@HÁČKYčárky.cz');
$ciEmailAddress = Nepada\EmailAddress\CaseInsensitiveEmailAddress::fromDomainAndLocalPart('HÁČKYčárky.cz', 'Real.example+suffix');
Nepada\EmailAddress\InvalidEmailAddressException
is thrown in case of invalid input value.
Casting the value object to string, will result in the original (non-canonical) string representation of email address:
echo((string) $emailAddress); // Real.example+suffix@HÁČKYčárky.cz
echo($emailAddress->toString()); // Real.example+suffix@HÁČKYčárky.cz
echo($emailAddress->getValue()); // real.example+suffix@xn--hkyrky-ptac70bc.cz
echo($emailAddress->getLocalPart()); // real.example+suffix
echo($emailAddress->getDomain()); // xn--hkyrky-ptac70bc.cz
- nepada/email-address-doctrine - Email address type for Doctrine.
- nepada/email-address-input - Email address form input for Nette forms.