Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/10/2007, 16h40   #1
Membre éclairé
 
Homme
Développeur Web
Inscription : avril 2004
Messages : 319
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2004
Messages : 319
Points : 325
Points : 325
Par défaut [SOAP] Passage des types imposés en paramètres

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 :
Code :
1
2
3
$type = is_int($age);
if ($type) $res='true';
else $res='false';
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.
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 ! ^^
Guybrush113 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2007, 09h34   #2
Membre éclairé
 
Homme
Développeur Web
Inscription : avril 2004
Messages : 319
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2004
Messages : 319
Points : 325
Points : 325
Bon alors en fait, à priori, côté serveur je recevrai toujours les types demandés, à moins qu'un NULL soit passé 'en force'.
J'ai testé avec un WSDL différent pour mon client, en lui envoyant un autre type définit dans le WSDL côté serveur, et ca me sort une bonne vieille erreur indiquant une erreur côté serveur...

Donc pas possible de tout maitriser les inputs côté serveur, le client doit pas faire n'importe quoi non plus.

Ralala qu'est-ce qui faut pas faire pour tester...
Guybrush113 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h33.


 
 
 
 
Partenaires

Hébergement Web