Email address value object
Installation
Via Composer:
$ composer require nepada/email-address
Usage
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()
.
Creating value object
$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.
Converting back to string
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
Canonical string representation of email address
echo($emailAddress->getValue()); // [email protected]
Getting normalized local and domain part separately
echo($emailAddress->getLocalPart()); // real.example+suffix
echo($emailAddress->getDomain()); // xn--hkyrky-ptac70bc.cz
Integrations
- nepada/email-address-doctrine - Email address type for Doctrine.
- nepada/email-address-input - Email address form input for Nette forms.