En PHP la gestion précise des booléens peut s’avérer plus complexe que prévu.
De manière générale, il peut sembler simple de manipuler des valeurs booléennes lorsque vous travaillez uniquement avec votre propre code, en vous assurant de bien typer vos variables en booléen.
Cependant, la complexité augmente lorsque des sources externes entrent en jeu. Que vous traitiez les données de fichiers .env
ou les informations de formulaires, il est crucial de vous assurer que les valeurs booléennes sont correctes et cohérentes.
Lors de ces interactions, vous ne recevrez plus des valeurs strictement typées en booléen, mais des textes contenant des "true"
/ "false"
, voir parfois des "on"
/ "off"
et d’autres formats similaires.
Dans cet article, nous explorerons l’utilisation de la fonction filter_var
en PHP pour simplifier la validation et le traitement des booléens. En mettant l’accent sur les problématiques liées à leurs validations.
![Image de l'article Traiter correctement la validation des booléens](https://explain.code-to.me/app/uploads/2023/11/explain-code-me-boolean-check-new-jpg.webp)
Pourquoi valider les booléens ?
Les données booléennes sont couramment utilisées pour gérer les états, les autorisations et les configurations dans une application. Une validation inadéquate peut entraîner des erreurs de logique, des failles de sécurité et des comportements inattendus.
Les valeurs booléennes externes
Lorsque vous manipulez des données booléennes provenant de sources externes, comme des fichiers de configuration ou des formulaires web, ces dernières ne sont pas toujours présentées de manière standard.
Vous pouvez ainsi rencontrer les formes suivantes : "true"
, "false"
, "1"
, "0"
, "yes"
, "no"
, "on"
, "off"
, "True"
, "False"
, "Yes"
, "No"
, "On"
, "Off"
, true
, et false
.
Ces variations peuvent rendre la validation des booléens complexe, mais c’est là qu’intervient la fonction
.filter_var
filter_var()
pour valider les booléens
La fonction filter_var
en PHP offre une solution élégante pour valider et traiter les booléens, quelle que soit leur forme. Voici comment vous pouvez l’utiliser :
$maVariable = "true"; // Cette variable peut contenir des valeurs comme "true", "1", "yes", "On", etc.
if (filter_var($maVariable, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) !== null) {
// La valeur est un booléen valide (true ou false).
echo "C'est un booléen valide !";
} else {
// La valeur n'est pas un booléen valide.
echo "Ce n'est pas un booléen valide.";
}
Avec cette méthode,
détectera si la valeur est un booléen valide, quelle que soit sa forme et simplifiera le processus de validation.filter_var
- Le paramètre
FILTER_VALIDATE_BOOLEAN
se charge de retournertrue
oufalse
en fonction de l’analyse du contenu de$maVariable
. - Le paramètre
FILTER_NULL_ON_FAILURE
quant à lui permettra de renvoyernull
pour toutes les valeurs non booléennes.
Mise en pratique avec des données de formulaires ou de .env
// Utilisation suite à un formulaire contenant une case à cocher
$valeurCaseACocher = $_POST['case_a_cocher'];
if (filter_var($valeurCaseACocher, FILTER_VALIDATE_BOOLEAN)) {
// La case à cocher est cochée
// Votre code ici...
} else {
// La case à cocher n'est pas cochée
// Votre code ici...
}
// Lecture d'une valeur booléenne depuis un fichier .env
$parametreActif = getenv('PARAMETRE_ACTIF');
if (filter_var($parametreActif, FILTER_VALIDATE_BOOLEAN)) {
// Le paramètre est actif
// Votre code ici...
} else {
// Le paramètre est inactif
// Votre code ici...
}
Référence
Découvrez la documentation PHP sur filter_var().