Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/01/2012, 22h16   #1
Invité de passage
 
Inscription : janvier 2012
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 2
Points : 1
Points : 1
Par défaut appel a une fonction membre sur un non-object

bonjour à tous,

j essaie de recuperer des données d'un objet membre et j ai ce message d erreur qui me laisse perplexe :
"Fatal error: Call to a member function getX() on a non-object "
voici le code...
j ai une premiere classe
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Point{
	//ATTRIBUTS
	private $x;
	private $y;
	//CONSTRUCTEURS
	public function __construct($x,$y){
		$this->x=$x;
		$this->y=$y;
	}
	//METHODES
	public function getX(){
		return $this->x;
	}
	public function getY(){
		return $this->y;
	}
        // ....
}
et c'est de celle ci que l erreur provient
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Rectangle{
	//ATTRIBUTS
	 public $pt;
	 private $dim;
	//CONSTRUCTEURS
	public function __construct(Point $p,Dimension $d){
		$pt=$p;
		echo '<br/>'.$pt->getX();//pas d'erreur
		$dim=$d;
	}
        // ...
	public function getX(){               
                echo '<br/>'.$pt->getX();//erreur
                return $pt->getX();        //erreur
	}
il s agit ici de la derniere solution que j ai essayé (cad $pt en public...)
je ne vous fais pas la liste des idées saugrenues que j ai pu avoir...
variable tampon de type Point, transtypage, $this->pt->getX(), ...

pourquoi il ne s'agit pas d un objet en dehors du constructeur?

bref comment peut on realiser quelque chose qui parait aussi simple de maniere sans doute un peu plus compliquée?

merci d'avance pour toute aide, mon etat present est : foo(totensai);

PS inutile de vous preciser que j ai le meme probleme avec l attribut $dim
totensai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2012, 22h26   #2
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonsoir,

Une instance de classe est accessible via le pointeur $this. Dans le constructeur de ta classe Rectangle tu fais $pt = $p or ça devrait être $this->pt = $p;.
De même pour $dimEnsuite dans ta fonction getX(), tu dois renvoyer la valeur de la variable de classe $pt et tu as oublié le pointeur vers l'instance de classe $this, cela devrait être : echo '<br/>'.$this->pt->getX();En oubliant le pointeur $this, ton code crée des variables locales ayant une portée de fonction.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2012, 22h43   #3
Invité de passage
 
Inscription : janvier 2012
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 2
Points : 1
Points : 1
un enorme merci...

j etais pourtant persuadé d avoir deja essayé cela...c est dingue
je vais enfin pouvoir dormir

je ne cache pas ma petite honte
totensai est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h36.


 
 
 
 
Partenaires

Hébergement Web