Pages : 1
#1 Le 01/04/2007, à 18: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, à 18: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, à 10: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, à 16: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
Pages : 1