La classe `BulkGate\Sms\BulkMessage` représente l'objet qui regroupe des messages de type [`BulkGate\Sms\Message`](https://www.bulkgate.com/fr/documentation/php-sdk/php-sdk-message/2.0/) en un message groupé (campagne).

```php
use BulkGate\Sms\BulkMessage;
```

Le constructeur accepte un paramètre facultatif de type [`array`](http://php.net/manual/en/language.types.array.php), qui doit contenir des éléments de type [`BulkGate\Sms\Message`](https://www.bulkgate.com/fr/documentation/php-sdk/php-sdk-message/2.0/).

```php
$array = [
    new BulkGate\Sms\Message("420777777777", "test1"),
    new BulkGate\Sms\Message("420777777778", "test2"),
    new BulkGate\Sms\Message("420777777779", "test3"),
    new BulkGate\Sms\Message("420777777780", "test4"),
];

$bulk_message = new BulkMessage($array);
```

Les messages peuvent aussi être ajoutés un par un :

```php
$message = new BulkGate\Sms\Message(
    new BulkGate\Sms\Message\PhoneNumber("777777781", BulkGate\Sms\Country::CZECH_REPUBLIC),
    new BulkGate\Sms\Message\Text("test<number>", [
        'number' => '5'
    ])
);

/** @var BulkGate\Sms\BulkMessage $bulk_message */
$bulk_message->addMessage($message);
```

## Itérateur

Vous pouvez parcourir les messages à l'aide de la boucle [`foreach`](http://php.net/manual/en/control-structures.foreach.php)

```php
/** 
 * @var BulkGate\Sms\BulkMessage $bulk_message 
 * @var BulkGate\Sms\Message $message
 */
foreach($bulk_message as $message)
{
    echo $message;
}
```

Le nombre de messages s'obtient avec la méthode `count()`

```php
/** @var BulkGate\Sms\BulkMessage $bulk_message */
$bulk_message->count();
```

## Prise en charge de JSON

L'objet `BulkGate\Sms\BulkMessage` implémente l'interface [`\JsonSerializable`](http://php.net/manual/en/class.jsonserializable.php), qui permet de le convertir au format JSON via la fonction [`json_encode()`](http://php.net/manual/en/function.json-encode.php).

```php
/** @var BulkGate\Sms\BulkMessage $bulk_message */
echo json_encode($bulk_message);
```

Le résultat est :

```json
[
  {
    "number": {
      "number": "420777777777",
      "iso": null
    },
    "text": "test1",
    "status": "preparation",
    "price": 0.0,
    "credit": 0.0,
    "id": null,
    "scheduled": null
  },
  {
    "number": {
      "number": "420777777778",
      "iso": null
    },
    "text": "test2",
    "status": "preparation",
    "price": 0.0,
    "credit": 0.0,
    "id": null,
    "scheduled": null
  },
  {
    "number": {
      "number": "420777777779",
      "iso": null
    },
    "text": "test3",
    "status": "preparation",
    "price": 0.0,
    "credit": 0.0,
    "id": null,
    "scheduled": null
  },
  {
    "number": {
      "number": "420777777780",
      "iso": null
    },
    "text": "test4",
    "status": "preparation",
    "price": 0.0,
    "credit": 0.0,
    "id": null,
    "scheduled": null
  },
  {
    "number": {
      "number": "777777781",
      "iso": "cz"
    },
    "text": "test5",
    "status": "preparation",
    "price": 0.0,
    "credit": 0.0,
    "id": null,
    "scheduled": null
  }
]
```

## Conversion en chaîne

L'objet `BulkGate\Sms\BulkMessage` implémente la méthode magique [`__string()`](http://php.net/manual/en/language.oop5.magic.php#object.tostring).

```php
/** @var BulkGate\Sms\BulkMessage $bulk_message */
$message = (string) $bulk_message; // dans la variable
echo $bulk_message; // vers la sortie
```

Le résultat est :
```
420777777777: test1
420777777778: test2
420777777779: test3
420777777780: test4
777777781: test5
```

## Conversion en tableau

```php
/** @var BulkGate\Sms\BulkMessage $bulk_message */
$array = $message->toArray();
```
