Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Services Web
Services Web Forum d'entraide pour les services Web en PHP, qui permettent de créer et de consommer facilement des webservices (génération de WSDL etc.). Exemples : SOAP, NuSOAP, REST, SCA-SDO... Avant de poster -> Cours webservices
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 14/06/2011, 11h56   #1
Futur Membre du Club
 
Inscription : septembre 2006
Messages : 39
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 39
Points : 15
Points : 15
Par défaut Soap - Mapping d'attributs

Bonjour,

Je tente d'utiliser l'option classmap avec l'objet SoapClient, or le webservice que j’interroge retourne des noms d'attributs contenant des tirets (ex : custom-fields).

Sachant qu'il n'est pas possible de nommer l'attribut d'une classe PHP avec un tiret, comment faire ? Existe-t-il un moyen de spécifier un mapping d'attributs, comme c'est le cas en Java ?

Merci d'avance pour vos retours,

Perrine.
pepelele est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 13h44   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
fait
Code :
$obj->{'custom-fields'}
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 13h56   #3
Futur Membre du Club
 
Inscription : septembre 2006
Messages : 39
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 39
Points : 15
Points : 15
Je réitère ma question.

J'ai un WS qui me retourne par exemple :
Code :
1
2
3
object(stdClass)[143]
    public 'title' => string 'categories' (length=10)          
    public 'url-params-base' => string '?search=blue' (length=12)
Et j'ai créé une classe :
Code :
1
2
3
4
5
6
 
<?php
class Filter {
    protected $title;
    protected $urlParamsBase;
}
dans le but d'utiliser l'option classmap (cf. http://php.net/manual/fr/soapclient.soapclient.php)

Or l'un des attributs contient des tirets et en PHP on ne peut pas avoir :
Code :
1
2
3
4
5
6
 
<?php
class Filter {
    protected $title;
    protected $url-params-base;
}
donc j'aimerais savoir s'il y a moyen de définir un mapping entre l'attribut renvoyé par Soap url-params-base et l'attribut de ma classe $urlParamsBase.

J'ajoute que je n'ai pas la main sur le nom de ces attributs.

Merci.
pepelele est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 14h07   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
normalement tout les attributs insérés avec le classmap sont publiques et mis via __set, donc il sera mis dedans quand même, en gros t'as pas trop le choix
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 14h15   #5
Futur Membre du Club
 
Inscription : septembre 2006
Messages : 39
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 39
Points : 15
Points : 15
Je ne comprends pas, je n'ai pas le choix de ?
pepelele est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 14h20   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
Citation:
Envoyé par pepelele Voir le message
Je ne comprends pas, je n'ai pas le choix de ?
de faire juste


Code :
1
2
3
4
5
6
class Filter {
}
 
//blabla SOAP
 
echo $filter->{'url-params-base'};
EDIT : ou alors tu gères avec __set

Code :
1
2
3
4
5
6
7
8
9
10
class Filter {
    protected $title;
    protected $url_params_base;
 
    public function __set($name, $value)
    {
        $name = str_replace('-', '_', $name);
        $this->$name = $value;
    }
}
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 15h27   #7
Futur Membre du Club
 
Inscription : septembre 2006
Messages : 39
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 39
Points : 15
Points : 15
Ah oké, merci.
pepelele est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h10.


 
 
 
 
Partenaires

Hébergement Web