Salut, j'ai un léger soucis d'héritage que je vais faire partager avec vous parce que vous êtes trop sympa ;)
[code]<?PHP
abstract class cContacts
{
protected $nom;
function __construct($nom)
{
$this->nom=$nom;
echo 'retour de constructeur de cContacts<br>';
}
function getNom()
{
return $this->nom;
}
}
?>[/code]
[code]<?PHP
class cContactsPro extends cContacts
{
private $societe;
function __contruct($nom)
{
echo 'retour de constructeur de cContactsPro<br>';
}
function getNom()
{
return $this->nom;
}
}
?>[/code]
[quote]$unContact = new cContactsPro('PowOx');[/quote]
Vous avez tout, les 2 classes et l'appel.
voici le résultat obtenu :
[quote]retour de constructeur de cContacts
PowOx [/quote]
Pkoi me donne-t-il le constructeur de cContacts et pas celui de cContactsPro ?
ERREUR BBCODE SUR CE MESSAGE : - La valeur de la balise "quote" n'est pas correcte !
Fatal error: Cannot access protected property cContacts::$nom in
il me semblait pouvoir accéder a des données protégé depuis la classe fille. En private ça marche pas et en public il me demande de le mettre en static.
le mode static est indispensable pour utiliser les membres mère dans une classe fille ???
En fait je ne vois pas pkoi je serais obligé de passer par une méthode, ça m'embète ...
je ne compte pas écrire les mêmes méthodes partout, surtout que la classe mère est en abstract, les méthodes n'ont pas lieu d'etre.
J'ai donc plutôt envie de déclarer les méthodes dans les classes filles mais ces dernières n'ont apparamment pas le droit d'accéder aux membres parents, comment faire ?
tu te fais 1 match seul Powox?
Bon, pour répondre a ton pb, je vais devoir attendre qu'on me rende mon book "PHP5 avancé"
parce que sur le Net, j'ai pas trouvé ton bonheur (j'ai pas cherché longtemps mais bon...)
__________________________ FAQ PHP
Bon, powox, comme il faut que je progresse encore énormement pour pouvir expliquer clairement les choses, je vais faire simple et te copier l'exemple du bouquin php5 avancés
class vehicule_a_moteur {
function avancer() {
echo "j'avance";
}
}
class voiture extends vehicule_a_moteur {
function passer_la_vitesse($vitesse) {
echo "je passe la vitesse $vitesse";
}
}
function avancer() {
$this->passer_la_vitesse(1);
parent::avancer();
}
}
$mavoiture = new voiture();
$mavoiture->avancer;
//affiche "je passe la vitesse1" puis "j'avance"
__________________________
Gabacho
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (les Shadocks)
merci gabacho,
au final c'est bien comme ça que je fais, mais je pensais qu'il y avait plus simple et surtout, plus logique ... devoir déclarer 2 fois les mêmes méthodes ça me paraissait absurde, en même temps dans ton exemple c'est un peu plus concret, je pourrais aussi avoir un "scooter extends vehicule_a_moteur" mais ne pas avoir à passer de vitesse, donc surdéfinir la méthode.
mais en fait en php c'est une obligation ... domage :(