Les planificateurs sont des classes qui permettent de planifier l'envoi des messages à certains intervalles ou à des moments précis.

## Planificateur simple

Planificateur simple pour l'envoi de messages à un moment précis.

```php
$scheduler = new Simple(new DateTime('2025-12-13 12:00'));
$scheduler->schedule($message);
```

## Campagne

Le planificateur de campagne vous permet de lancer l'envoi des messages à partir d'un moment précis, à des intervalles définis. Vous pouvez également définir combien de messages planifiés seront envoyés après un certain intervalle.

```php
$scheduler = new Campaign(new DateTime('2025-12-13 12:00'));
$scheduler->restriction(100 /* messages */, 2, 'hours');
$scheduler->schedule($message);
```

La méthode `restriction()` n'accepte que ces unités : `minute`, `minutes`,
`hour`, `hours`, `day`, `days`. Toute autre valeur se termine par une
`BulkGate\Sdk\InvalidStateException`.

L'heure de début se modifie avec la méthode `datetime()`, et `reset()` remet à zéro le
compteur des lots envoyés.

## Sans planification

`BulkGate\Sdk\Scheduler\None` est un planificateur vide — il envoie le message
immédiatement. Il est utile lorsque vous transmettez un planificateur de manière conditionnelle.

## Transmettre le planificateur au service d'envoi

Vous n'avez pas besoin d'appeler le planificateur manuellement ; une fois défini sur le service d'envoi (sender), il
s'applique à chaque message que vous envoyez.

```php
$sender->setScheduler(new Simple(new DateTime('2025-12-13 12:00')));
$sender->setScheduler(null); // annuler la planification
```