Warning: Illegal offset type

Signaler
Messages postés
26
Date d'inscription
jeudi 28 février 2008
Statut
Membre
Dernière intervention
5 août 2009
-
Messages postés
26
Date d'inscription
jeudi 28 février 2008
Statut
Membre
Dernière intervention
5 août 2009
-
Bonjour bonjour !

A partir d'un XML, je récupère sous forme d'objet les informations concernant un fichier (son nom, si ce fichier est requis, s'il fait partie d'une collection, son poids, et enfin sa valeur par défaut). A partir de ses attributs, je construit un champs de formulaire (qui constitue également un objet) qui lui est propre. Ici, il s'agit d'une image :

var_dump($image);
$this->fichiers[$image->nom] = new ImageField($image->nom, $image->est_requis, $image->est_unique, $image->poids_max, $image->default);


Cependant, j'obtiens :

object(SimpleXMLElement)#15 (5) { ["nom"]=>  string(5) "photo" ["est_requis"]=>  string(3) "oui" ["est_unique"]=>  string(3) "oui" ["poids_max"]=>  string(7) "5000000" ["default"]=>  string(11) "default.jpg" }
Warning: Illegal offset type in ...


...et là, je bloque. Sauriez-vous m'aider ?

4 réponses

Messages postés
26
Date d'inscription
jeudi 28 février 2008
Statut
Membre
Dernière intervention
5 août 2009

$images = new SimpleXMLElement(file_get_contents($chemin_fichiers.'images.xml'));
foreach ($images as $image)
{
    var_dump($image);
    $this->fichiers[$image->nom] = new ImageField($image->nom, $image->est_requis, $image->est_unique, $image->poids_max, $image->default);
}


... ça sera peut-être plus clair.
Messages postés
26
Date d'inscription
jeudi 28 février 2008
Statut
Membre
Dernière intervention
5 août 2009

[^^sad1]
Messages postés
662
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
18 septembre 2009
1
Bonjour,

Il est probable que le coupable soit le var_dump().

La documentation de PHP SimpleXMLElement précide:

" Note: SimpleXML has made a rule of adding iterative properties to most methods. They cannot be viewed using var_dump() or anything else which can examine objects."
Messages postés
26
Date d'inscription
jeudi 28 février 2008
Statut
Membre
Dernière intervention
5 août 2009

Hello!

Je pense que le problème ne venait pas du var_dump, mais du fait qu'il fallait forcer la définition du type de donnée pour chaque attribut obtenus :

foreach ($images as $image)
{
$this->fichiers[(string)$image->nom] = new ImageField((string)$image->nom, (bool)$image->est_requis, (bool)$image->est_unique, (string)$image->default, (int)$image->poids_max);
}

Voilà... keep on programmin' folks.