prepare($sql); $stmt->execute([$contexte, $portee]); $consignes = $stmt->fetchAll(); // Traitements d'abord (silencieux, jamais de message) : une consigne de // test lue ensuite doit voir la valeur déjà mise en forme (ex. le nom // déjà en majuscules avant de vérifier qu'il n'est pas vide). foreach ($consignes as $c) { if ($c['CNS_Nature'] !== 'Traitement') continue; if (!$c['FON_NomPHP'] || !function_exists($c['FON_NomPHP'])) continue; $valeurActuelle = (string)($data[$c['CNS_Champ']] ?? ''); $data[$c['CNS_Champ']] = call_user_func($c['FON_NomPHP'], $valeurActuelle); } // Puis les tests, sur les valeurs déjà transformées ci-dessus. foreach ($consignes as $c) { if ($c['CNS_Nature'] !== 'Test') continue; if (!$c['FON_NomPHP'] || !function_exists($c['FON_NomPHP'])) continue; $valeur = (string)($data[$c['CNS_Champ']] ?? ''); if (!call_user_func($c['FON_NomPHP'], $valeur)) { return $c['CNS_MessageErreur'] ?: 'Consigne non respectée.'; } } return null; }