Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
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 23/07/2011, 15h28   #1
Invité régulier
 
Homme
Développeur Web
Inscription : juin 2010
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2010
Messages : 28
Points : 8
Points : 8
Par défaut Héritage et appel de méthode du parent

Bonjour,

J'ai une classe A et une classe B qui hérite de la première.

Dans la classe A, je définis
- une variable privée _a
- une méthode maMethode()

Dans la classe B je redéfinis la méthode maMethode()
Cette dernière affecte une valeur à la variable héritée _a et appelle la méthode de base de la classe A via parent::maMethode()

Et là, je constate que lors de l'exécution du code de la méthode dans le parent, cette dernière ne voit pas la valeur affectée à la variable _a

Tout se passe comme si, lorsque j'appelle parent::maMethode(), j'avais deux instances distinctes de mon objet. Une instance de la classe A et une de B

Est le comportement normal de php5 ?

Merci de vos lumières
waxman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2011, 15h57   #2
Membre confirmé
 
Avatar de sayari.dev
 
Homme Marouen Sayari
Développeur Web
Inscription : mai 2010
Messages : 142
Détails du profil
Informations personnelles :
Nom : Homme Marouen Sayari
Localisation : Algérie

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2010
Messages : 142
Points : 225
Points : 225
Citation:
Envoyé par waxman Voir le message
Dans la classe B je redéfinis la méthode maMethode()
Cette dernière affecte une valeur à la variable héritée _a et appelle la méthode de base de la classe A via parent::maMethode()

Et là, je constate que lors de l'exécution du code de la méthode dans le parent, cette dernière ne voit pas la valeur affectée à la variable _a
Ton _a doit être déclaré avec la visiblité protected

Code php :
1
2
3
4
5
6
7
Class A{
 
  protected $_a;
 
  .....
 
}
__________________
C'est en faisant n'importe quoi qu'on devient n'importe qui
sayari.dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2011, 16h00   #3
Invité régulier
 
Homme
Développeur Web
Inscription : juin 2010
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2010
Messages : 28
Points : 8
Points : 8
Merci,

Je viens tout juste de trouver et j'allais poster la solution. Décidément, il faut que revoie mes classique sur la différence entre prive et protegé

Merci pour ton post
waxman 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 07h26.


 
 
 
 
Partenaires

Hébergement Web