Référence à un objet dans une classe -> Fatal Error [Résolu]

Signaler
Messages postés
16
Date d'inscription
dimanche 25 janvier 2004
Statut
Membre
Dernière intervention
10 mai 2006
-
Messages postés
16
Date d'inscription
dimanche 25 janvier 2004
Statut
Membre
Dernière intervention
10 mai 2006
-
<?php


Class Test2{
function sayHello(){echo "hello";}
}


Class Test1{
private $var1;
function Test1(){$var1 = new Test2();}
function faisParlerTest2(){$var1->sayHello();}
}


$test1 = new Test1();
$test1->faisParlerTest2();


:?>


/ Fatal error: Call to a member function sayHello() on a non-object in test.php on line 12

5 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
Salut,

moi je proposerais plutot $this...



<?php



Class Test2{
function sayHello(){echo "hello";}
}



Class Test1{
private $var1;
function Test1(){$this->var1 = new Test2();}
function faisParlerTest2(){$this->var1->sayHello();}
}



$test1 = new Test1();
$test1->faisParlerTest2();



:?>



In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Class Test1 extends Test2{
private $var1;
function Test1(){$var1 = new Test2();}
function faisParlerTest2(){$var1->sayHello();}
}

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Effectivement ça donne ça au final :

<?php

Class Test2
{
function sayHello()
{
echo 'hello';
}
}

Class Test1
{
private $var1;
function Test1()
{
$this->var1 = new Test2();
}
function faisParlerTest2()
{
$this->var1->sayHello();
}
}

$test1 = new Test1();
$test1->faisParlerTest2();

?>

je n'avais pas vu.

a +

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
Salut,
On peut aussi avec une héréditée, mais c'est pas forcément possible, faut voir en fonction de la suite...



<?php



Class Test2{
function sayHello(){echo "hello";}
}



Class Test1 extends Test2{
function Test1(){Test2:Test2();}
function faisParlerTest2(){Test2:sayHello();}
}



$test1 = new Test1();
$test1->faisParlerTest2();



?>



In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
16
Date d'inscription
dimanche 25 janvier 2004
Statut
Membre
Dernière intervention
10 mai 2006

Ah oui effectivement, honte à moi, j'avais oublié le $this ...
Merci !!!!!!!!!!!!!!!!! (o:
merci à tous (: