<?php
// est possible
$mere = new mere();
$mere->test();
// est impossible
$enfant = new enfant();
$enfant->test();
?>
<?php
class mere {
public function test() {
}
}
classe enfant extends mere {
// private ou abstract ne fonctionne pas,
// ça renvoie un message d'erreur.
public function test() {
}
}
La relation existe, ce que je veux, c'est renvoyer une erreur sans passer par les exceptions lorsque j'appelle la methode this->test depuis la classe enfant.Voilà tu as tout dit, "un champ" n'est pas un "formulaire", point à la ligne......La classe mère représente un formulaire. Les classes enfant des objets du formulaire (exemple un champs input), qui dépendent du formulaire instancié...
Bon, j'ai bien compris ce que vous m'avez expliqué, dans l'ensemble. Maintenant, le problème qui se pose, c'est de comprendre l'agrégation. Les documentations que j'ai :Je plussoie Tracker. Ton modèle de classes est mauvais, c'est de aggrégation qu'il te faut, pas de l'héritage.
class Formulaire
{
$a_inputs = array() // Liste des inputs associés à ce formulaire
// Permet d'agréger un nouvel input dans le formulaire courant
public function addInput( $o_input )
{
// Agrège le nouvel input dans l'attribut de classe $a_inputs
$this->a_inputs[ $o_input->getId() ] = $o_input;
}
// Récupère un input agrégé dans la classe
public functionj getInput( $id_input )
{
return $this->a_inputs[ $id_input ];
}
}En réalité la relation existant entre Champ et Formulaire n'est pas une agrégation mais une composition.... Bon, j'ai bien compris ce que vous m'avez expliqué, dans l'ensemble. Maintenant, le problème qui se pose, c'est de comprendre l'agrégation ...