linkmobility-php-client/src/ValueObject/Sender.php

55 lignes
1.4 KiB
PHP
Brut Vue normale Historique

2022-06-20 14:47:33 +02:00
<?php
declare(strict_types=1);
namespace D3\LinkmobilityClient\ValueObject;
use Assert\Assert;
2022-06-24 16:00:56 +02:00
use D3\LinkmobilityClient\Exceptions\ExceptionMessages;
use D3\LinkmobilityClient\Exceptions\RecipientException;
use libphonenumber\NumberParseException;
use libphonenumber\PhoneNumberFormat;
use libphonenumber\PhoneNumberUtil;
2022-06-20 14:47:33 +02:00
class Sender extends StringValueObject
{
2022-06-24 16:00:56 +02:00
/**
* @param string $number
* @param string $iso2CountryCode
*
* @throws RecipientException
* @throws NumberParseException
2022-06-24 16:00:56 +02:00
*/
public function __construct(string $number, string $iso2CountryCode)
2022-06-20 14:47:33 +02:00
{
Assert::that($iso2CountryCode)->string()->length(2);
2022-07-11 15:06:18 +02:00
$phoneUtil = $this->getPhoneNumberUtil();
$phoneNumber = $phoneUtil->parse( $number, strtoupper($iso2CountryCode) );
2022-07-12 10:04:04 +02:00
$number = ltrim($phoneUtil->format($phoneNumber, PhoneNumberFormat::E164), '+');
if (false === $phoneUtil->isValidNumber($phoneNumber)) {
throw new RecipientException( ExceptionMessages::INVALID_SENDER );
2022-06-20 14:47:33 +02:00
}
parent::__construct( $number);
2022-06-20 14:47:33 +02:00
}
2022-07-11 15:06:18 +02:00
/**
* @return PhoneNumberUtil
*/
protected function getPhoneNumberUtil(): PhoneNumberUtil
{
return PhoneNumberUtil::getInstance();
}
2022-07-12 10:04:04 +02:00
/**
* @return int
*/
public function getFormatted()
{
return (int) parent::getFormatted();
}
2022-06-20 14:47:33 +02:00
}