Convertir de retour d'un WS en donnée organisées.

Moderator: Mod

Convertir de retour d'un WS en donnée organisées.

Postby SHEPSHEP » Thu Mar 07, 2013 4:57 pm

Salut,

Voila une fonction qui permet de convertir le code dégueulasse (mix de stdclass et de Array) et aléatoire (suivant si le résultat est unique ou multiple) que retourne les WS.

Finis les stdclass imbriqués et les Array Map / Item !!
On récupère des tableaux multidimensionnels plus facilement exploitable.

[code:1:47f476e16c]function wsdl2array($elem){
$arrayParams = array();
if(is_array($elem) || is_object($elem)){
foreach($elem as $line){
if(isset($line->key)){
$key = $line->key;
if(!is_array($line->value) && !is_object($line->value)){
$arrayParams[$key] = trim(strip_tags($line->value));
}
else{
$arrayParams[$key] = wsdl2array($line->value);
}
}
else{
$arrayParams[] = wsdl2array($line);
}
}
}
else{
$arrayParams[] = $elem;
}

return $arrayParams;
}[/code:1:47f476e16c]

++
2ShEp
SHEPSHEP
Projets
 
Posts: 268
Joined: Wed Apr 08, 2009 11:14 am
Location: /dev/null

Postby SHEPSHEP » Fri Mar 08, 2013 11:31 am

Amélioration de la première function.
Le retour est beaucoup plus propre, les tableaux inutiles étant supprimés.

[code:1:55680b6d24]function wsdl2array($elem){
$arrayParams = array();
if(is_array($elem) || is_object($elem)){
if(is_object($elem) && isset($elem->Map)){
// supprime la class stdClass Map
$elem = $elem->Map;
if(is_array($elem)){
foreach($elem as $k0 => $v0){
$arrayParams[] = wsdl2array2($v0);
}
}elseif(is_object($elem)){
$arrayParams[] = wsdl2array2($elem);
}
}else{

}
}
return $arrayParams;
}

function wsdl2array2($elem){
if(is_object($elem) && isset($elem->item)){
// supprime la class stdClass item
$elem = $elem->item;
foreach($elem as $k1 => $v1){
if(is_object($v1)){
if(is_object($v1->value)){
$t[$v1->key] = wsdl2array($v1->value);
}else{
$t[$v1->key] = $v1->value;
}
}
}
$elem = $t;
}
return $elem;
}[/code:1:55680b6d24]

Reste plus qu'a en faire une belle class mais pas le temps aujourd'hui.

++
2ShEp
SHEPSHEP
Projets
 
Posts: 268
Joined: Wed Apr 08, 2009 11:14 am
Location: /dev/null


Return to Php

Who is online

Users browsing this forum: No registered users and 0 guests

cron