La clase `BulkGate\Sms\Message\PhoneNumber` representa el objeto del número de teléfono.

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

El constructor acepta el parámetro obligatorio del número de teléfono y, opcionalmente, el código ISO del país.

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

El segundo parámetro es obligatorio si indica el número en formato nacional. Si indica un número de teléfono en formato nacional y no indica el código [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2), BulkGate completará el prefijo internacional según el país indicado en su cuenta de usuario.

También puede cambiar el número de teléfono después de crear la instancia.

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

También puede establecer el código ISO.

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

// o

$phone_number->iso('cz');
``` 
Si el código ISO no es válido, se lanza la excepción `BulkGate\Sms\Message\InvalidPhoneNumberException` 


## Conversión a JSON

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

La salida es:

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

## Otros

Obtención del número de teléfono formateado como cadena

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

Obtención del código ISO
```php
/** @var BulkGate\Sms\Message\PhoneNumber $phone_number */
$phone_number->getIso(); // devuelve una cadena o null
``` 

También es compatible con la [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);
```
