Bonjour,

Je ne sais pas si une montée de version de PHP a foutu la merde ou si c'est à force de bidouiller mon programme que ça ne fonctionne plus ou s'il y a un truc avec l'héritage qui m'échappe mais j'ai un gros souci à vous soumettre !

Suite à saisie d'un formulaire, je récupère, entre autres, ces informations en $_POST :
[civilite] => 1
[nomUsuel] => TEST
[prenomUsuel] => Prénom-Test
J'ai une structure de classes modèles en cascade :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
class Personne extends Modele
 
class PersonnePhysique extends Personne
 
class Candidat extends PersonnePhysique
 
class Etudiant extends Candidat
Du coup, les constructeurs des différentes classes appellent le constructeur de la classe parente. Par exemple, en remontant la chaîne décrite ci-dessus j'ai ça dans la classe Etudiant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
	/**
	 * Constructeur
	 * @param integer $pph_id
	 * @param string $pph_nom_usuel
	 * @param prénom usuel $pph_prenom
	 * @param Civilite $pph_civilite
	 */
	public function __construct($pph_id = null, $pph_nom_usuel = null, $pph_prenom = null, $pph_civilite = null)
	{
		parent::__construct($pph_id = null, $pph_nom_usuel = null, $pph_prenom = null, $pph_civilite = null);
	}
J'ai ça dans la classe Candidat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
	/**
	 * Constructeur
	 * @param integer $pph_id identifiant de la personne
	 * @param string $pph_nom_usuel nom usuel de la personne physique
	 * @param string $pph_prenom prénom usuel de la personne physique
	 * @param Civilite $pph_civilite civilité de la personne physique
	 */
	public function __construct($pph_id = null, $pph_nom_usuel = null, $pph_prenom = null, $pph_civilite = null)
	{
		parent::__construct($pph_id, $pph_nom_usuel, $pph_prenom, $pph_civilite);
	}
Et ça dans la classe PersonnePhysique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
		/**
	 * Constructeur
	 * @param integer $pph_id 			: Identifiant de la personne 
	 * @param string $pph_nom_usuel 	: Nom usuel de la personne
	 * @param string $pph_prenom 		: Prénom usuel de la personne
	 * @param Civilite $pph_civilite 	: Civilité de la personne 
	 */
	public function __construct($pph_id = null, $pph_nom_usuel = null, $pph_prenom = null, $pph_civilite = null)
	{
		parent::__construct($pph_id, $pph_nom_usuel);
 
		if(!is_null($pph_prenom))
		{
			$this->setPrenom($pph_prenom);
		}
 
		if(!is_null($pph_civilite))
		{
			$this->setCivilite($pph_civilite);
		}
	}
Dans le code qui traite le formulaire, j'ai ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$objEtudiant = new Etudiant(null, trim($_POST['nomUsuel']), trim($_POST['prenomUsuel']), new Civilite(intval($_POST['civilite'])));
Si je ne me trompe dans ma compréhension du phénomène, Instancier l'étudiant en lui passant le nom usuel, le prénom usuel et la civilité devrait lancer en cascade les différents constructeurs et remplir mon objet, non ?

Juste après ça, j'ai affiché en débogage mon objet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
echo "<pre>";
print_r($objEtudiant);
echo "</pre>";
exit;
Mais malheureusement, il est vide !
Application\Model\Etudiant Object
(
[etuNumero:Application\Model\Etudiant:private] =>
[etuAnneeEntree:Application\Model\Etudiant:private] =>
[etuPhoto:Application\Model\Etudiant:private] =>
[etuPieceIdentite:Application\Model\Etudiant:private] =>
[etuAutorisationPhoto:Application\Model\Etudiant:private] =>
[etuAttestationSecu:Application\Model\Etudiant:private] =>
[etuAutorisationIzly:Application\Model\Etudiant:private] =>
[etuRib:Application\Model\Etudiant:private] =>
[canIdSexe:Application\Model\Candidat:private] =>
[canPaysNationalite:Application\Model\Candidat:private] =>
[canVilleNaissance:Application\Model\Candidat:private] =>
[canNomNaissance:Application\Model\Candidat:private] =>
[canDateNaissance:Application\Model\Candidat:private] =>
[canAutresPrenoms:Application\Model\Candidat:private] =>
[canINE:Application\Model\Candidat:private] =>
[pph_prenom:Application\Model\PersonnePhysique:private] =>
[pph_civilite:Application\Model\PersonnePhysique:private] =>
[personneId:Application\Model\Personne:private] =>
[personneNomUsuel:Application\Model\Personne:private] =>
)
Qu'est-ce que j'ai loupé ?