Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 01/04/2007, à 19:28

gene69

[php] tableaux d'objets

bonjour
j'ai créé une classe d'objet personnalisée "Jour".
Dans une autre classe je stoque des instances de ses objets dans un tableau $this->calendrier.

lorsque j'énnumère les données avec un foreach je n'ai pas de problemes pour faire

foreach( $this->calendrier as $key => $value){
   $value->toTexte(); // ou
   $this->calendrier[$key]->toTexte();
}

cependant lorsque je calcule une clée autrement (en dehors d'un foreach) je n'arrive pas à faire:

$tmp=longCalculComplique($temperature,$pression,$pH);
$this->calendrier[$tmp]->toTexte();

j'ai pourtant vérifié que $tmp est valide, cependant

Fatal error: Call to a member function toTexte() on a non-object in /home/utilisateur/www/monfichier.php

merci de votre aide.

Dernière modification par gene69 (Le 01/04/2007, à 19:32)


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#2 Le 03/04/2007, à 11:29

Nicolas2b

Re : [php] tableaux d'objets

Salut,

Est tu sur que

$this->calendrier[$tmp]

te renvoie un objet, si ce n'est pas le cas, cea est sans doute la cause de l'erreur.

Nicolas.

PS : peux tu poster ton code ?


Ubuntu Gutsy sur ASUS A6JA Q016H
2 Go de RAM
ATI X1600
Core Duo 1,8 GHz

Hors ligne

#3 Le 03/04/2007, à 17:13

Tonio

Re : [php] tableaux d'objets

il faut tester que l'element que tu recupere est une clef du tableau, puis tester que l'element s'il existe est du bon type.

Voila un bout de code (non testé que devrais faire le job).

$tmp=longCalculComplique($temperature,$pression,$pH);

# on teste l'existence de l'element du tableau
if (!in_array($tmp,array_keys($this->calendrier) {
  throw new Exception("L'element '$tmp' n'est pas une clé du tableau!") ;
}

# on teste le type de l'element du tableau
if ($this->calendrier[$tmp] instanceof Jour) {
  $this->calendrier[$tmp]->toTexte();
} else {
  throw new Exception("L'element '$tmp' n'est pas un objet Jour!") ;
}

Hors ligne