Fonction récursive avec un paramètre en objet
Bonjour à tous !
Alors voilà, pour l'entreprise pour laquelle je travaille, j'ai créé un WebService.
J'ai des objets avec des propriétés en string qui passent dans le WSDL. Mais il y a une curieuse chose ! certains textes passent mal, ceux disposant de \r\n, seul le \n arrive à destination, le \r est complètement oublié O_o.
J'ai donc créé une fonction récursive permettant de nettoyer un objet.
voici mon exemple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| <?php
class myCLass
{
public $boolean = false;
public $integer = 0;
public $double = 0.0;
public $string = null;
function myCLass($boolean, $integer, $double, $string)
{
$this->boolean = $boolean;
$this->integer = $integer;
$this->double = $double;
$this->string = $string;
}
}
function FixObjectPDA($myParam)
{
switch(gettype($myParam))
{
case 'array' :
foreach($myParam AS $oneObject)
{
$myParam[array_search($oneObject, $myParam)] = FixObjectPDA($oneObject);
}
break;
case 'object' :
foreach($myParam AS $myField)
{
$myParam[array_search($myField, $myParam)] = FixObjectPDA($myField);
}
break;
case 'string' :
return FixStringPDA($myParam);
break;
default :
return $myParam;
break;
}
}
function FixStringPDA($str)
{
$FindLineFeed = preg_match("#\n#", $str);
$FindCarriage = preg_match("#\r#", $str);
if($FindLineFeed && !$FindCarriage)
{
return preg_replace("/(\n)/", "\r\n", $str);
}
return $str;
}
$myObject[] = new myCLass(true, 3, 1.8, "essai\r\n avec des retour chariot d'après ce qu'il semble !");
$myObject = FixObjectPDA($myObject);
var_dump($myObject);
?> |
Seulement voilà, je ne suis pas un grand expert en fonction récursive.
Le fonctionnement :
Je peux passer en paramètre de la fonction un Objet ou une collection d'Objets.
Pour chaque éléments de la collection, on relance la fonction.
Dans le cas d'un champ string, on répare les données.
Dans le cas ou il s'agit d'un autre type de données, on ne fait aucun traitement.
ATTENTION ! Un objet peut posséder des sous-objets !
Le problème est que je n'arrive pas à obtenir de retour :/
Pourriez-vous m'aider svp ? Merci. :D