Warning: Illegal offset type

BooletMan Messages postés 26 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 5 août 2009 - 3 août 2009 à 15:49
BooletMan Messages postés 26 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 5 août 2009 - 5 août 2009 à 12:07
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

BooletMan Messages postés 26 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 5 août 2009
3 août 2009 à 15:55
$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.
0
BooletMan Messages postés 26 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 5 août 2009
3 août 2009 à 18:20
[^^sad1]
0
nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 1
5 août 2009 à 10:30
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."
0
BooletMan Messages postés 26 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 5 août 2009
5 août 2009 à 12:07
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.
0
Rejoignez-nous