Pour tester l'existence d'une variable,
ColdFusion offre la fonction IsDefined et le tag CFParam :
a) IsDefined
Cette fonction permet de vérifier si une variable existe déjà.
- En utilisant la syntaxe CFML :
- En utilisant le tag CFScript :
b) CFParam
Ce tag permet, en plus de tester l'existence de
la variable, de valider le type de la variable et d'assigner une valeur par
défaut à la variable si inexistante.
- En utilisant la syntaxe CFML :
- En utilisant le tag CFScript :
Le tag CFParam possède les attributs
suivants :
Attribut
|
Requis
|
Description
|
name
|
oui
|
Nom
de la variable.
|
default
|
non
|
Si
la variable est inexistant, elle sera créer et initialiser par la valeur de
cet attribut.
|
type
|
non
|
Le
type de données valide pour la variable.
|
min
|
non
|
La
valeur minimale que la variable peut prendre. À utiliser uniquement avec le
type « range ».
|
max
|
non
|
La
valeur maximale que la variable peut prendre. À utiliser uniquement avec le
type « range ».
|
pattern
|
non
|
L'expression
régulière que la valeur de la variable doit correspondre. À utiliser
uniquement avec les types « regex » ou
« regular_expression ».
|
Remarques :
-
Si la variable est inexistante et que l'attribut « default » n'est pas précisé,
alors ColdFusion générera une erreur (par exemple : « The required
parameter bookID was not provided »).
-
La valeur de l'attribut « default » ne sera pas affectée à la variable
s'elle existe déjà, mais la valeur de cet attribut sera comme même évaluée et
si l'expression a un effet de bord, il va se reproduire. De même, ColdFusion
générera une erreur s'il n'arrive pas à évaluer l'expression correctement.
-
L'attribut « type » permet de préciser le type de la variable. ColdFusion
générera une erreur si la variable est existante mais sa valeur ne peut être
convertie au type spécifiée. Aussi ColdFusion générera une erreur si la
variable est inexistante mais la valeur de l'attribut « default » ne
peut être convertie au type spécifiée.
-
Les attributs « min » et « max » n'ont aucun effet si la valeur
de l'attribut « type » n'est pas « range ». Mais si le type
est « range », ColdFusion générera une erreur si la variable est
existante mais sa valeur n'est pas numérique ou n'est pas comprise entre les
valeurs spécifiées dans les attributs « min » et « max ».
Aussi ColdFusion générera une erreur si la variable est inexistante mais la
valeur de l'attribut « default » n'est pas numérique ou n'est pas
comprise entre les valeurs spécifiées dans les attributs « min » et « max ».
Voici la liste des valeurs possibles pour l'attribut « type » :
Type
de données
|
Description
|
any
|
N'importe
quel type de données.
|
string
|
Chaîne
de caractères.
|
boolean
|
Valeur
Booléenne: yes, no, true, false, ou une valeur numérique.
|
integer
|
Valeur
entière.
|
float
numeric
|
Valeur
numérique.
|
date
time
|
Dates.
|
Type
de données
|
Description
|
range
|
Intervalle
numérique (à utiliser avec l'attribut « min » ou/et
« max »).
|
usdate
|
Date
E.U. avec le format « mm/dd/yyyy », avec 1 à 2 chiffres pour le mois
et le jour, et 1 à 4 chiffres pour l'année.
|
eurodate
|
Date
U.E. avec le format « dd/mm/yyyy », avec 1 à 2 chiffres pour le mois
et le jour, et 1 à 4 chiffres pour l'année. Le séparateur « . » est aussi
acceptable.
|
Type
de données
|
Description
|
regex
regular_expression
|
Expression
régulière (à utiliser avec l'attribut « pattern »).
|
variableName
|
La valeur de la variable doit être une chaîne de caractères formatée selon les conventions de ColdFusion pour nommer des variables.
|
uuid
|
ColdFusion
« Universally Unique Identifier » avec le format
"XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXXXXX", où "X" est une
valeur hexadécimale.
|
guid
|
ColdFusion
« Universally Unique Identifier » avec le format
"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", où "X" est une
valeur hexadécimale.
|
email
|
Format
d'une adresse courriel.
|
url
|
Une
URL http, https, ftp, file, mailto, ou news.
|
ssn
social_security_number
|
Format
du numéro de sécurité social E.U.
|
telephone
|
Format
du numéro de téléphone E.U.
|
zipcode
|
Format
du code postal E.U. (5- ou 9- chifres).
|
creditcard
|
Un
nombre de 13-16 chiffres conforme a l'algorithme mod10.
|
Type
de données
|
Description
|
array
|
Tableau.
|
struct
|
Structure.
|
query
|
Objet requête.
|
Type
de données
|
Description
|
binary
|
Valeur
binaire.
|
xml
|
Objet
XML et chaînes de caractères XML.
|
Exemples :
Si la variable « bookID » n'est pas
encore déclarée, CFParam va le déclarer et initialiser sa valeur à
« 999999 ».
Pour le cas de la variable
« myStruct.bookName », CFParam vérifie s'il existe une structure
« myStruct » qui contient la variable « bookName ». Si la
structure « myStruct » n'est pas encore créée, alors CFParam va créer
d'abords cette structure puis y attachera la variable « bookName »,
sinon, si la structure « myStruct » existe déjà, alors CFParam va
créer uniquement la variable « bookName » si inexistante et
initialiser sa valeur à « ColdFusion 10 ».