Parcourir un objet dans une classe dont je suis le cancre

Une moulinette de code qui s'est enrayée, une requête SQL qui ne passe pas ?
ph.gras
Addict
Addict
 
Messages: 71
Inscription: 23 Juin 2013, 13:39

Parcourir un objet dans une classe dont je suis le cancre

Messagede ph.gras » 03 Sep 2015, 22:28

Dans la classe MaClasse, je récupère un flux RSS YT qui se présente ainsi :
Code: Tout sélectionner
$sxe->entry->{$i}->published;

J'arrive à l'afficher avec la variable $feed que j'ai construite comme ceci :
Code: Tout sélectionner
$this->feed[$i][pubDate] = $sxe->entry->{$i}->published;

… ou comme cela :
Code: Tout sélectionner
$this->feed[$i]->pubDate = $sxe->entry->{$i}->published;


Mais ça ne me va pas, parce qu'ensuite les insertions dans la base s'effectuent
un peu n'importe comment. J'ai remarqué au fur et à mesure de mes tentatives
que WP réagissait mal avec les tableaux et se mélangeait les pédales lorsque le
nombre d'items augmente de façon significative.

Il faut que j'arrive à modifier ma variable $feed sous la forme suivante :
Code: Tout sélectionner
$this->feed->{$i}->pubDate = $sxe->entry->{$i}->published;


Donc, à partir de mon tableau, là :
Code: Tout sélectionner
$feed_array_transit[$i] = array('pubDate' => (string)$feed[$i][pubDate], $bla_bla …);


L'itérer de manière optimale pour obtenir l'exacte représentation du DOM.

Mon problème, c'est qu'à chaque essai je génère une erreur PHP de type
warning (ou pire) qui fait bugger le parseur… Soit que la valeur n'existe
pas pour créer l'objet, soit que l'accès à la propriété ne m'est pas permis.

Vous l'avez compris, c'est surtout l'itérateur qui m'ennuie. Mais si cela est
possible, j'aimerais complètement reconstruire le flux RSS à ma main, en
passant par mon tableau de transit, de manière à ne conserver que ce qui
m'intéresse dans les données originales, voire les modifier entre temps…

Avatar de l’utilisateur
Galdon
Administrateur du site
Administrateur du site
 
Messages: 2188
Inscription: 06 Sep 2008, 22:05

Re: Parcourir un objet dans une classe dont je suis le cancre

Messagede Galdon » 07 Oct 2015, 22:52

Je n'ai pas bien compris le problème, je suppose que tu utilise SimpleXML pour lire le flux (le code que tu donne en exemple ressemble à du SimpleXML). Si c'est le cas, il faut être conscient qu'en PHP les objets sont passés par référence, et que d'autre part, quand on utilise SimpleXML on est souvent obligé d'utiliser des casts (ex: (string)) pour lire les attributs ou les valeurs du DOM.

Peux-tu donner plus de détails (plus de code PHP, un flux XML d'exemple, et les erreurs PHP exactes) ?
"Si tu veux me parler, envoie-moi un... FAX !" - George Abitbol

ph.gras
Addict
Addict
 
Messages: 71
Inscription: 23 Juin 2013, 13:39

Re: Parcourir un objet dans une classe dont je suis le cancre

Messagede ph.gras » 20 Oct 2015, 15:43

Moi non plus je ne comprends pas très bien ce que tu écris. Par exemple :

  1. Je n'ai jamais réussi à comprendre le concept de référence ;
  2. Je ne saisis pas très bien ce que tu appelles cast

Sur le fond du problème, je l'ai vraisemblablement résolu en changeant de boucle,
en utilisant foreach à la place de for. Apparemment les 2 ne se comportent pas de
la même façon. Je trouve ça très bizarre et ça dépasse mon entendement.

Oui, j'utilise SimpleXML.


Retourner vers PHP/MySQL

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités