A classe `BulkGate\Sms\Message\PhoneNumber` representa o objeto do número de telefone.

```php
use BulkGate\Sms\Message\PhoneNumber;
```

O construtor aceita o parâmetro obrigatório número de telefone e o código ISO do país opcional.

```php
$phone_number = new PhoneNumber(
    "420777777777", 
    BulkGate\Sms\Country::CZECH_REPUBLIC
);
``` 

O segundo parâmetro é obrigatório se indicar o número em formato nacional. Se indicar um número de telefone em formato nacional sem o código [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2), o BulkGate preenche o indicativo internacional de acordo com o país indicado na sua conta de utilizador.

Também pode alterar o número de telefone depois de criar a instância.

```php
/** @var BulkGate\Sms\Message\PhoneNumber $phone_number */
$phone_number->phoneNumber('420777777777');
``` 

Também pode definir o código ISO.

```php
/** @var BulkGate\Sms\Message\PhoneNumber $phone_number */
$phone_number->iso(BulkGate\Sms\Country::CZECH_REPUBLIC);

// ou

$phone_number->iso('cz');
``` 
No caso de um código ISO inválido, é lançada a exceção `BulkGate\Sms\Message\InvalidPhoneNumberException` 


## Conversão para JSON

```php
/** @var BulkGate\Sms\Message\PhoneNumber $phone_number */
echo json_encode($phone_number);
``` 

O resultado é:

```json
{
    "number": "420777777777",
    "iso": null
}
``` 

## Outros

Obter o número de telefone formatado numa string

```php
/** @var BulkGate\Sms\Message\PhoneNumber $phone_number */
$phone_number->getPhoneNumber();
$number = (string) $phone_number; 
echo $phone_number;
```

Obter o código ISO
```php
/** @var BulkGate\Sms\Message\PhoneNumber $phone_number */
$phone_number->getIso(); // devolve uma string ou null
``` 

Também suporta [fluent interface](https://en.wikipedia.org/wiki/Fluent_interface)

```php
/** @var BulkGate\Sms\Message\PhoneNumber $phone_number */
$phone_number
    ->phoneNumber('777777777')
    ->iso(BulkGate\Sms\Country::CZECH_REPUBLIC);
```
