Page 1 sur 1

Utiliser une variable d'une class mere dans une class fille

Posté : 16 févr. 2009, 10:04
par thehawk
Bonjour a tous , certes le titre n'est pas clair mais cela s'explique tous simplement que je ne sais pas mettre un nom sur mon problème.

Je vais vous expliquer la situation
j'aimerais utiliser dans une class fille , une variable d'une class mere , puis ensuite l'afficher.

Okay vous avez rien compris ?

Voici le code que j'ai écrit :
<?php
class A
{
	public $print = array();
	function getPrint($var)
	{
		$this->print[] = $var;
	}
	function vPrint()
	{
		foreach ($this->print as $key => $value)
		{
			echo $value;
		}
	}
}
class B extends A
{
	function onPrint()
	{
		A::getPrint("Oh");
	}
}
$a = new A();
$b = new B();

$b->onPrint();
$a->vPrint();


?>
Donc en toute logique $a->vPrint(); devrais écrire : Oh pourtant rien.
En essayant $b->vprint(); cela marche.

Une idée pour que $a->vPrint(); marche ?

merci d'avance Hawk

Posté : 16 févr. 2009, 12:03
par naholyr
$this->getPrint tout simplement, vu que tu hérites logiquement des méthodes et attributs de la classe mère

Posté : 16 févr. 2009, 12:07
par sadeq
Non, l'héritage entre classes permet de réutiliser les membres (variables et méthodes) de la classe mère au niveau d'une classe fille et ce pour une instance de la fille. Tu ne peux pas espérer mettre en relation physique deux instances différentes. C'est pour cela que quand tu fais:
$a = new A();
$b = new B();
Tu déclare 2 objets distinct dans la mémoire: $a ne voit pas $b et vis-versa. Par contre pour exploiter l'héritage déclaré entre B et A c'est au niveau de l'objet $b que c'est possible de le faire, car $b étant hériter de la classe A a accès à tous ses membre. Du coups t'as plus besoin de créer l'objet $a car en créant $b, implicitement tu a accès aux membres de la classe A via l'objet $b.

Voici donc le corrigé:
$b = new B();

$b->onPrint();
$b->vPrint(); 

Posté : 16 févr. 2009, 12:10
par thehawk
Je me sens tout c** :oops:

vu que je demandais a une classe fille de toucher a une variable de la mere , et a la mere de l'afficher.

Encore merci =) :D