appel d'une fonction ou d'une autre en fonction d'un paramétrage
Bonjour,
Je suis en train de développer une application qui doit générer des numéros de dossiers.
Les numéros dossiers peuvent avoir plusieurs formats :
format 1 : commence par un D, codé sur 5 digits, incrémentale de 1 en 1
format 2 : commence par un 10, codé sur 3 digit, incrémental de 1 en 1
format 3 : commence par l'année en cours sur 2 caractères, codé sur 3 digit, incrémental de 1 en 1
etc etc
en fait chaque format est propre aux clients de mon application, chaque client étant indépendant.
La problématique est la suivante : Lorsque j'ai un nouveau client qui m'impose un nouveau format de numéro de dossier, je ne voudrais pas du tout toucher aux routines déjà présentes.
La solution qui m'est venu tout de suite en tête est la suivante :
Dans la base, associer à chaque client un numéro de format et dans le code faire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
function format1(numero){ #code de génération du format 1 }
function format2(numero){ #code de génération du format 2 }
function format3(numero){ #code de génération du format 3 }
// code général de l'application :
if (format_client == 1)
numero_dossier = format1(numero);
if (format_client == 2)
numero_dossier = format2(numero);
if (format_client == 3)
numero_dossier = format3(numero); |
Le problème avec cette façon de faire est que si j'ajoute un format, je suis obligé d'ajouter une itération if(format_client) == X.
Serait-il possible de stocker dans la base de données le nom de la fonction à appeler et, dans le code commun, appeler cette fonction variable sachant que je dois lui passer des variables ("numero" dans mon exemple) ?
Y a-t-il une autre façon de faire ?
Merci de vos idées !