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 :
J'ai une structure de classes modèles en cascade :[civilite] => 1
[nomUsuel] => TEST
[prenomUsuel] => Prénom-Test
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 class Personne extends Modele class PersonnePhysique extends Personne class Candidat extends PersonnePhysique class Etudiant extends Candidat
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 * @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); }
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 /** * 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); }
Dans le code qui traite le formulaire, j'ai ça :
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); } }
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 ?
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'])));
Juste après ça, j'ai affiché en débogage mon objet :
Mais malheureusement, il est vide !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 echo "<pre>"; print_r($objEtudiant); echo "</pre>"; exit;
Qu'est-ce que j'ai loupé ?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] =>
)
Partager