Alors voilà j'ai un nouveau soucis...
J'envoie plusieurs types paramètres dans ma méthode, et j'ai besoin de les tester avant de les traiter, et cela, côté serveur. Pour qu'il y ait dans tout les cas aucun problème si le client envoie n'importe quoi.
J'ai donc remarqué quelque chose d'assez bizarre (et oui toujours...).
Je vais vous donner l'exemple d'un passage d'un int, l'age d'une personne. J'ai donc dans mon WSDL :
name="age" type="xsd:int"
A l'arrivée dans ma méthode côté serveur je teste ceci :
Dans tout les cas, que j'envoie un int, un string, un boolean, un array... Une sorte de cast s'effectue, et ca met dans la variable age un int de valeur 0. Du coup tout les tests donnent true.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $type = is_int($age); if ($type) $res='true'; else $res='false';
La seule possibilité est de faire passer un NULL, dans ce cas il trouve bien que la variable $age est un NULL et non pas un int.
Le hic, c'est que j'effectue alors un autre test :
if ($age==NULL)
Donc en théorie, l'age est uniquement null quand on l'a précisé à l'appel de la fonction. Et ben non !
Dès qu'il ne trouve pas un int, ce dernier test passe... Donc pour lui un int=0 c'est égal à un NULL...
D'un côté c'est cool, quand il trouve pas de int, le dernier test correspond. Mais si on veut utiliser le paramètre age quand il est egal 0, ben dans le cul si je puis me permettre, il dit qu'il ne trouve pas de int...
Donc ma question : Ou se fait cette espèce de cast, ce forçage de passer le bon type ? Et est-ce controlable ? Ou bien les tests doivent se faire uniquement côté client ?
Désolé pour le pavé, j'espère que vous m'avez compris
Merci de votre aide ! ^^
Partager