Anomalie #4532
ferméImpossible d'utiliser des Fully Qualified Class Name pour l'appel d'une méthode statique d'une classe pour une valeur par défaut
100%
Étendre la syntaxe du check pour accepter les namespaces.
Vérifier aussi pour les attributs calculés.
Ajouter test dans le PU pour couvrir ces cas.
Description
Testé en 3.2.13
Si dans un fichier on déclare par exemple :
DEFAULT;attr_test;::myFunction();;;;;;;;;;;;;
Il n'y a pas de problème si la méthode myFunction est déclarée dans la Classe associée.
Par contre, si on essaie de faire appel à une méthode déclarée dans une autre classe qui utilise un namespace, on ne peut pas donner le FQCN de la classe dans le fichier, par exemple :
DEFAULT;attr_test;Toto\Test\MyClass::myFunction();;;;;;;;;;;;;
lève l'erreur suivante :
ERROR:{ATTR1250} syntax error in method call (phpfunc) for attribute "attr_test" : {ATTR1253} syntax error in class name in method call: "Toto\Test\MyClass"
Cela vient du fait que lors du parse du nom de la classe on fait appel à la méthode isPHPName() de la classe FDL/parseFamilyFunction qui retourne le preg_match suivant :
return preg_match('/^[a-z_][a-z0-9_]*$/i', $s);
Ce qui ne permet pas d'utiliser le caractère "\" pour un nom de classe.