Je possede deux classe :
Expert qui est ma classe mere, et expert_attente, sa classe fille
La classe mere est comme ceci :
class expert{
/** Attribut **/
public $id_expert;
public $pseudo;
public $email;
public $m_bMessage;
/** Constructeur **/
function __construct($id_expert,$pseudo){
$this->m_nAccesBD = new connexionBD();
$this->id_expert= $id_expert;
$this->pseudo = $pseudo;
}
/** Methode retournant les informations d'un user **/
function _infoExpert($aTable){
$this->m_nAccesBD->connexion(); //Connexion BD
/*** Requete SQL recuperation info user ***/
$sRequete = 'SELECT * FROM '.$aTable;
$sRequete .= ' LEFT JOIN type_expert';
$sRequete .= ' ON '.$aTable.'.type_expert = type_expert.id_expert';
$sRequete .= ' LEFT JOIN categorie';
$sRequete .= ' ON '.$aTable.'.num_categorie = categorie.id_categorie';
$sRequete .= ' WHERE pseudo = "'.$this->pseudo.'"';
$sRequete .= ' AND id_personne = '.$this->id_expert;
/*** Traitement de la requete SQL ***/
$rResultatInfoExpert = $this->m_nAccesBD->requete($sRequete);
echo $rResultat;
$this->m_nAccesBD->deconnexion(); //Deconnexion
$this->m_aInfoExpert = array();
return $this->m_aInfoExpert = mysql_fetch_array($rResultatInfoExpert);
}
function __tostring(){
$class = __CLASS__;
return 'Vous etes ds la classe '.$class;
}
Et voila sa classe fille :
//le require_once(class_mere); se trouve ds un fichier de configuration ailleurs
class expert_attente extends expert{
/** Attribut **/
public $id_expert_attente;
public $pseudo_attente;
public $m_bMessage;
/** Constructeur **/
function __construct($id_expert_attente,$pseudo_attente){
parent::__construct($id_expert_attente,$pseudo_attente);
}
/** Methode **/
function _infoExpertAttente(){
$aTable = 'expert_attente';
parent::_infoExpert($aTable);
}
function __tostring(){
return parent::__tostring();
}
}
Le soucis est que si je souhaite utiliser la methode _infoExpertAttente(), en allant voir la methode _infoExpert (y a juste le nom de la table sql a changé pr avoir des infos de experts ou experts_attente), je n ai rien.voila mon simple code sensé afficher :
$oExpert->m_nListeExpertAttente = $oExpert->_listeExpAttente(); //Methode retournant la liste des experts en attente, se trouvant ds la classe expert
if(empty($oExpert->m_nListeExpertAttente)){
echo '<p>Pas d\'experts en attente de validation</p>';
}else{
foreach($oExpert->m_nListeExpertAttente as $aListeExpertAttente){
echo 'Creation de l objet expert_attente avec : '.$aListeExpertAttente['id_personne'].' et '.$aListeExpertAttente['nom'].'<br />';
$oExpertAttente = new expert_attente($aListeExpertAttente['id_personne'],$aListeExpertAttente['nom']); //Creation de l objet d expert en attente
$oExpertAttente->_infoExpertAttente();
echo 'Class instanciée : '.get_class($oExpertAttente).'<br />';
echo 'Class mere : '.get_parent_class($oExpertAttente).'<br />';
echo 'ToString : '.$oExpertAttente;
// echo '<pre>'; print_r($oExpertAttente->m_aInfoExpert); echo '</pre>';
$affich = '<p>NOM : '.$oExpertAttente->m_aInfoExpert['nom'].'</p>';
echo $affich;
}
}