Anomalie #5254
ferméDoc::setLogicalName() ne retourne pas toujours une erreur quand le nom logique est incorrect
100%
Cette méthode est inactive si le nom est donné est vide (chaine vide '' ou null).
Dans les autres cas, le test de vérification est fait.
Ajouter cette précision dans le commentaire de la méthode
Description
Doc::setLogicalName() applique le nom logique si celui-ci est "true".
function setLogicalName($name, [....]) {
if ($name) {
[... vérification et application du nom logique ...]
}
return '';
}
Par conséquent, si le nom logique qu'on souhaite appliquer est une chaîne vide ou le caractère "0", alors la méthode bypasse silencieusement la vérification et l'application du nom, et ne retourne pas de code erreur comme si tout s'était bien passé.
$doc = createDoc('', 'BASE');
foreach (array("", "0", "1234") as $name) {
printf("%s => %s\n", var_export($name, true), var_export($doc->setLogicalName($name), true));
}
'' => '' '0' => '' '1234' => 'La nom [1234] est invalide : Le nom doit commencer par une lettre suivi de zéro ou plusieurs lettres, chiffres, tiret "-" et trait-bas "_"'
Cela oblige alors celui qui utilise Doc::setLogicalName() de faire lui même les vérifications sur la variable, qui contiendrait un nom logique , pour savoir s'il est bien formé ou non.
Mis à jour par Marc Claverie il y a plus de 11 ans
- Statut changé de Nouveau à À analyser
- Assigné à mis à Éric Brison
- Version cible mis à 3.2.18
Mis à jour par Éric Brison il y a plus de 11 ans
- Statut changé de À analyser à Assigné
- Assigné à changé de Éric Brison à Jérôme Augé
- Solution proposée mis à jour (diff)
Mis à jour par Éric Brison il y a plus de 11 ans
- Statut changé de Assigné à Intégré
Appliqué par commit dynacase-core|commit:00ecbdf59282b8d321b555bb337db6665d8e3a2b.