Classe de contrôle et de validation de RIB français
- Par Emacs
- 0 commentaire
- 1 838 lectures
- Format PDF
- RSS - Atom
Ce court tutoriel vous présente une classe qui permet de créer des objets encapsulant les données d'un numéro de RIB. Elle peut s'utiliser de deux manières différentes : soit créer des objets RIB ou bien servir comme système de validation des informations bancaires grâce à ses méthodes statiques. Bien que très peu extraordinaire en soit, cette source s'avère particulièrement pratique et efficace dans lors du développement d'applications de comptabilité par exemple.
Présentation de la source
Cette courte et simple classe permet de créer des objets de type RIB_FR ou bien d'utiliser ses méthodes statiques comme fonction de :
- calcul de clé RIB
- validation de format de clé RIB
- vérification du numéro de RIB français
Comme vous le savez surement, un RIB est constitué de quatre composantes : le code unique de la banque, le code unique de l'agence qui tient le compte, le numéro du compte et la clé RIB. Ce que vous ignorez peut-être en revanche, c'est que cette série de chiffres et de lettres n'est pas construite au hasard. En effet, le grand secret d'un RIB réside dans la clé qui est calculée à partir d'un algorithme utilisant les trois autres parties du RIB.
Cette classe s'appuie sur cet algorithme de calcul de clé RIB que vous pouvez découvrir sur Wikipédia à l'adresse suivante : http://fr.wikipedia.org/wiki/Cl%C3%A9_RIB. Entrons dans le vif du sujet et présentons le code de la classe RIB_FR. Nous verrons ensuite quelques exemples d'utilisation.
Téléchargement et licence
Le code source de cette classe est disponible en téléchargement au format zip [ 4 Ko ] et soumis à une licence LGPL. Vous êtes libres de l'utiliser comme bon vous semble (modification, commercialisation dans vos projets...) mais vous devez y laisser les commentaires qui précisent l'origine de la source (auteur, email, site...).
Code source de la classe RIB_FR
<?php/*** Classe clé RIB** Cette classe permet de créer des objets de type RIB_FR stockant* des numéro de comptes bancaires français.** Elle propose également les outils nécessaires pour contrôler* la validité d'un RIB français sans pour autant créer des objets.** @author Hugo HAMON <webmaster@apprendre-php.com>* @created 2007-12-14* @updated 2008-01-23* @version 1.0**/class RIB_FR{/*** Attributs**/private $_sCodeBanque;private $_sCodeGuichet;private $_sCleRib;private $_sNumeroDeCompte;/*** Constructeur de la classe** @auhtor Hugo HAMON <webmaster@apprendre-php.com>* @param string code unique de la banque* @param string code unique du guichet (agence où se trouve le compte)* @param string numéro du compte bancaire (peut contenir des lettres)* @param string clé rib* @return void**/public function __construct($sCodeBanque, $sCodeGuichet, $sNumeroCompte, $sCleRib){// Contrôle du RIBif(true === (self::verifierRIB($sCodeBanque, $sCodeGuichet, $sNumeroCompte, $sCleRib))){// Mise à jour des données membres$this->_sCodeBanque = $sCodeBanque;$this->_sCodeGuichet = $sCodeGuichet;$this->_sCleRib = $sCleRib;$this->_sNumeroDeCompte = $sNumeroCompte;}else{throw new Exception('Le RIB indiqué n\'est pas un RIB valide français');}}/*** Destructeur de la classe** @auhtor Hugo HAMON <webmaster@apprendre-php.com>* @param void* @return void**/public function __destruct() { }/*** Méthode __toString() affichant le RIB correctement formaté** @auhtor Hugo HAMON <webmaster@apprendre-php.com>* @param void* @return string numéro de compte RIB complet**/public function __toString(){return $this->_sCodeBanque .' '. $this->_sCodeGuichet .' '. $this->_sNumeroDeCompte .' '. $this->_sCleRib;}/*** Cette fonction calcule une clé RIB à partir des informations bancaires* La fonction implémente l'algorithme de clé RIB* Une clé RIB n'est valable que si elle se trouve dans l'intervalle 01 - 97** @param string code unique de la banque* @param string code unique du guichet (agence où se trouve le compte)* @param string numéro du compte bancaire (peut contenir des lettres)* @return string clé rib calculée**/{// Variables locales$iCleRib = 0;$sCleRib = '';// Calcul de la clé RIB à partir des informations bancaires$sNumeroCompte = strtr(strtoupper($sNumeroCompte), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ','12345678912345678923456789');// Valeur de retourif($iCleRib<0){$sCleRib = '0'. (string)$iCleRib;} else {$sCleRib = (string) $iCleRib;}return $sCleRib;}/*** Cette fonction vérifie que la clé RIB se trouve bien dans l'intervalle 01 - 97** @author Yves Maistriaud <http://www.expreg.com>* @param string clé rib* @return boolean true / false**/{}/*** Cette fonction vérifie que le RIB passé en paramètre* est un RIB de compte bancaire français correct** @author Hugo HAMON <webmaster@apprendre-php.com>* @param string code unique de la banque* @param string code unique du guichet (agence où se trouve le compte)* @param string numéro du compte bancaire (peut contenir des lettres)* @param string clé rib* @return boolean true / false**/{// Variables locales$bCorrect = false;// La clé RIB est-elle syntaxiquement juste ?if(self::verifierCleRib($sCleRib)){// La clé RIB correspond-elle avec les informations bancaires ?if($sCleRib === self::calculerCleRib($sCodeBanque, $sCodeGuichet, $sNumeroCompte)){$bCorrect = true;}}// Valeur de retourreturn $bCorrect;}/*** Cette fonction retourne le code banque** @auhtor Hugo HAMON <webmaster@apprendre-php.com>* @param void* @return string code banque**/public function getCodeBanque(){return $this->_sCodeBanque;}/*** Cette fonction retourne le code guichet** @auhtor Hugo HAMON <webmaster@apprendre-php.com>* @param void* @return string code guichet**/public function getCodeGuichet(){return $this->_sCodeGuichet;}/*** Cette fonction retourne la clé rib** @auhtor Hugo HAMON <webmaster@apprendre-php.com>* @param void* @return string clé rib**/public function getCleRib(){return $this->_sCleRib;}/*** Cette fonction retourne le numéro de compte** @auhtor Hugo HAMON <webmaster@apprendre-php.com>* @param void* @return string numéro de compte**/public function getNumeroDeCompte(){return $this->_sNumeroDeCompte;}}?>
Quelques exemples d'utilisation de cette classe
Exemple d'utilisation en mode création d'objet
<?php// Import de la classerequire('/path/to/classes/directory/RIB_FR.inc.php');try{// Création du RIB$oRibFr = new RIB_FR('39999', '00555', '00012345687', '22');// Récupération des informations// Affichage du RIB via la méthode __toString()}catch(Exception $e){}?>
Exemple de vérification du format d'une clé RIB
<?php// Import de la classerequire('/path/to/classes/directory/RIB_FR.inc.php');if(!RIB_FR::verifierCleRib('22'){echo 'Cette clé RIB est incorrecte !';}?>
Exemple de génération de la clé RIB
<?php// Import de la classerequire('/path/to/classes/directory/RIB_FR.inc.php');// Génération de la clé RIB$sCleRib = RIB_FR::calculerCleRib('39999', '00555', '00012345687');// Affichage de la clé?>
Exemple de contrôle d'un RIB
<?php// Import de la classerequire('/path/to/classes/directory/RIB_FR.inc.php');// Génération de la clé RIBif(!RIB_FR::verifierRib('39999', '00555', '00012345687', '22')){echo 'Le RIB est incorrect !';}?>
Conclusion
Ce petit outil que j'ai développé à la suite d'un projet d'application de comptabilité s'avère très utile et efficace pour contrôler et valider le format d'un RIB. Nul besoin d'écrire des pavés de lignes de code pour vérifier que le RIB français que l'on vous soumet est correct ou non. La classe RIB_FR le fait tout simplement à votre place.
Les commentaires
Soyez le premier à réagir !
