libriciel / ls-message-wrapper
Wrapper PHP de l'API lsmessage, avec vérification du contenu des SMS avant envoi
Requires
- php: ^8.3
- ext-json: *
- ext-mbstring: *
- psr/http-client: ^1.0.2
- psr/http-factory: ^1.0.2
Requires (Dev)
- phpstan/phpstan: ^2.2
- phpunit/phpunit: ^12.5
- symplify/easy-coding-standard: ^13.3
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- 2.x-dev
- 2.0.0
- 1.x-dev
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.1
- 1.0.0
- dev-master
- dev-9-modification-du-calcul-du-nombre-de-caracteres
- dev-6-correction-calcul-nombre-caracteres-pour-le-contenu-d-un-sms
- dev-3-modification-regle-de-validation-sender
- dev-2-modification-regle-de-validation-sender-et-message
This package is auto-updated.
Last update: 2026-09-23 05:25:16 UTC
README
Wrapper PHP de l'API LsMessage. La lib vérifie aussi la validité du contenu des SMS avant l'envoi.
Prérequis
- PHP 8.3 ou supérieur, avec les extensions
jsonetmbstring - Un client HTTP PSR-18 et une fabrique de requêtes PSR-17
Installation
composer require libriciel/ls-message-wrapper
Mise à jour depuis la version 1.x
composer require libriciel/ls-message-wrapper:^2.0
La version 2.0 introduit des changements incompatibles :
- PHP 8.3 minimum (au lieu de 7.4). La lib est testée sur PHP 8.3, 8.4 et 8.5.
- URL en
https://uniquement :setUrl()refuse désormais les URL enhttp://, pour que la clé d'API ne transite jamais en clair. Avant de mettre à jour, vérifier qu'aucune URL LsMessage enregistrée n'utilisehttp://. - La classe
Smsestfinalet ne peut plus être étendue. Sms::jsonSerialize()déclare le type de retourarray.
En dehors de ces points, l'API publique est inchangée : aucune autre modification n'est nécessaire, sauf pour un projet
qui étendait Sms.
Utilisation
Initialisation
Dans un projet Symfony, le plus simple est de déclarer LsMessageWrapper comme sérvice et de l'injécter.
Sinon, par exemple avec Guzzle :
use GuzzleHttp\Client; use GuzzleHttp\Psr7\HttpFactory; use Libriciel\LsMessageWrapper\LsMessageWrapper; $lsMessage = new LsMessageWrapper(new Client(), new HttpFactory()); $lsMessage->setUrl('https://lsmessageurl.fr'); $lsMessage->setApiKey('structure_api_key');
Envoi d'un SMS
use Libriciel\LsMessageWrapper\Sms; // nom, numéro de téléphone, contenu, expéditeur $sms = new Sms('seance idelibre', '0601020304', 'Vous avez reçu une notification', 'libriciel'); $result = $lsMessage->sendOne($sms);
Le constructeur de Sms vérifie les données et lève une LsMessageException (code 400) si :
- le nom est vide ou fait 255 caractères ou plus ;
- le contenu est vide ou dépasse
Sms::MAX_CHARACTERS_MESSAGE(160) caractères GSM ; - l'éxpediteur ne fait pas entre 3 et 11 caractères alphanumériques (sans espace ni caractère spécial).
Envoi de SMS par lots
$smsArray = [ new Sms('seance idelibre', '0601020304', 'Vous avez reçu une notification', 'libriciel'), new Sms('seance idelibre', '0601020305', 'Vous avez reçu une notification', 'libriciel'), ]; $result = $lsMessage->sendMultiple($smsArray);
Le nom et l'expéditeur du premier SMS sont utilisés pour tout le lot.
Informations du compte
$info = $lsMessage->info();
Comptage de caractères
Certains caractères sont remplacés avant l'envoi (voir Sms::REMPLACEMENTS_CARACTERES) et d'autres comptent double (€
, retour à la ligne) :
LsMessageWrapper::countGsmCharacters('Salut €'); // 8
Gestion des erreurs
Toutes les erreurs sont levées sous forme de LsMessageException. Son code vaut :
- le statut HTTP renvoyé par l'API en cas d'erreur de celle-ci ;
- 400 si les données fournies sont invalides ;
- 500 si la réponse de l'API n'est pas un JSON valide.
use Libriciel\LsMessageWrapper\LsMessageException; try { $lsMessage->sendOne($sms); } catch (LsMessageException $e) { // $e->getMessage(), $e->getCode(), $e->getPrevious() }
Développement
L'environnement de développement tourne dans Docker (PHP 8.3, la version minimale supportée) :
| Commande | Rôle |
|---|---|
make build |
Construit l'image |
make composer-install |
Installe les dépendances |
make test |
Lance les tests (PHPUnit) |
make phpstan |
Analyse statique (PHPStan, niveau 10) |
make ecs |
Vérifie le style de code (ECS, PSR-12) |
make ecs-fix |
Corrige le style de code |
make shell |
Ouvre un terminal dans le conteneur |
La CI exècute les tests sur PHP 8.3, 8.4 et 8.5.