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 13/02/2008, 15h03   #1
Invité de passage
 
Inscription : juin 2002
Messages : 2
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 2
Points : 0
Points : 0
Par défaut [POO] PHP et héritages

Bonjour,

Je suis actuellement en train de developper de nouveaux modules pour l'application d'eCommerce MAGENTO.

Durant mes développements, j'ai créer une nouvelle classe (XyzCorp_Adminhtml_Block_Catalog_Product_Grid), qui hérite de Mage_Adminhtml_Block_Catalog_Product_Grid.

La classe parente Mage_Adminhtml_Block_Catalog_Product_Grid contient une méthode _prepareColumns(). Dans ma classe, j'ai créer cette méthode dans le but de modifier son comportement : j'ai donc créé la même méthode _prepareColumns().

Quand j'execute mon code, ce n'est pas la méthode de ma classe "enfant" mais celle du "parent" qui est exécutée. Si je supprime la méthode de ma classe parente, là j'ai bien le résultat attendu.

Cela fonctionne bien, mais je ne peux pas garder cette solution, car pour éviter les problèmes lors de mise à jour de l'application, je ne peux toucher à aucune classe parente.

Y a t'il un moyen de spécifier lors de la déclaration de ma méthode qu'elle doit "écraser" celle qui existe déjà ?

Cordialement,
Antoine
GofFazer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 16h51   #2
Membre éprouvé
 
Développeur Web
Inscription : avril 2005
Messages : 395
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 395
Points : 479
Points : 479
Salut,

peut on voir la déclaration de ta classe enfant ? et un bout de la classe parent
Gats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 16h54   #3
Membre régulier
 
Avatar de daajack
 
Inscription : octobre 2007
Messages : 97
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 97
Points : 78
Points : 78
Etonnant, c'est normalement ce qui devrait se faire par défaut, puis après tu appelle ta méthode parente par un parent::_prepareColumns(). Il doit y avoir un problème dans ton code. Il faudrait donner du code à manger au développeur, pour qu'ils puissent ruminer.
daajack est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 16h55   #4
Membre émérite
 
Inscription : septembre 2007
Messages : 951
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 951
Points : 948
Points : 948
Tu n'as pas a le spécifier quelle méthode utiliser, l'héritage est la pour ca.

Il faudra que tu postes un peu de code car je ne vois pas pourquoi c'est la méthode de ta classe mere qui est appelée.
batataw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 17h06   #5
Membre éprouvé
 
Développeur Web
Inscription : avril 2005
Messages : 395
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 395
Points : 479
Points : 479
Citation:
Envoyé par daajack Voir le message
Etonnant, c'est normalement ce qui devrait se faire par défaut, puis après tu appelle ta méthode parente par un parent::_prepareColumns(). Il doit y avoir un problème dans ton code. Il faudrait donner du code à manger au développeur, pour qu'ils puissent ruminer.
Je sais pas si j'ai bien compris ta remarque ... mais lui c'est bien la méthode enfant qu'il veut et normalement la méthode enfant "surcharge" la méthode parent.

EXEMPLE 1
Surcharger une méthode parente :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
<?php
Class A
{
	public function afficher()
	{
		echo "salut !";
	}	
 
}
 
Class B extends A
{
 
	public function afficher()
	{
		echo "Bonjour !";
	}
}
 
$b = new B();
$b->afficher();
 
// Bonjour !
?>
EXEMPLE 2
Utiliser une méthode parente
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
Class A
{
	public function afficher()
	{
		echo "salut !";
	}	
 
}
 
Class B extends A
{
 
 
}
 
$b = new B();
$b->afficher();
 
// salut !
?>
si j'ai bien compris ton problème GofFazer, tu aimerais te trouver dans l'exemple 2
Gats est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h02.


 
 
 
 
Partenaires

Hébergement Web