La classe `BulkGate\Sms\Message\PhoneNumber` représente l'objet numéro de téléphone.

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

Le constructeur accepte le paramètre obligatoire numéro de téléphone et, en option, le code ISO du pays.

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

Le second paramètre est obligatoire si vous saisissez un numéro au format national. Si vous saisissez un numéro de téléphone au format national sans indiquer le code [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2), BulkGate complète l'indicatif international d'après le pays indiqué dans votre compte utilisateur.

Vous pouvez également modifier le numéro de téléphone après la création d'une instance.

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

Vous pouvez également définir le code ISO.

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

// ou

$phone_number->iso('cz');
``` 
En cas de code ISO invalide, l'exception `BulkGate\Sms\Message\InvalidPhoneNumberException` est levée 


## Conversion en JSON

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

La sortie est :

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

## Autres

Obtenir le numéro de téléphone formaté sous forme de chaîne

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

Obtenir le code ISO
```php
/** @var BulkGate\Sms\Message\PhoneNumber $phone_number */
$phone_number->getIso(); // renvoie une chaîne ou null
``` 

Elle prend également en charge l'[interface fluide](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);
```
