Obliger déclaration attribut dans classe fille

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 juil. 2007, 17:49

Bonjour à tous,

Je cherche à savoir comment obliger la déclaration d'un attribut dans une classe fille depuis la classe mère :!:

Je m'explique : dans un développement, j'ai une classe mere abstraite qui contient un ensemble de méthode pré-définie. Le but étant de permettre le développement de classe filles qui se concentrent sur l'aspect métier et non pas sur les méthodes communes à toutes les classes filles.

Or, dans l'une des méthodes de la classe mère, j'ai besoin d'un attribut de la classe fille.
Je voudrais, sans définir cet attribut dans la classe mère, obliger la déclaration de cet attribut dans les classes filles. L'équivalent de la déclaration d'une méthode abstraite, mais pour un attribut.

j'ai essayé les syntaxes suivantes, sans succès
class maClasse
{
	abstract protected $nom_requete;	// Un attribut ne peut être abstrait
	static protected $nom_requete;		// Non modifiable mais il est possible de ne pas le définir dans les classes fille
}
J'en déduit donc que ce que je demande ne doit pas être possible en PHP5 :?

Sans passer par une méthode qui vérifie que l'attribut est saisi, est-ce que quelqu'un à une solution "miracle"
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 928 Messages

19 juil. 2007, 18:58

Salut,
de base dans le language c'est impossible. Après il y a probablement moyen de bidouiller mais ça sera crade, par exemple si la propriété de l'enfant est publique ou protected tu peux vérifier si elle existe avec property_exists() dans le constructeur.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

20 juil. 2007, 10:29

Merci de ta réponse.

Si ce n'est pas possible dans le langage, je n'ai pas envie de mettre en place un fake crade qui sera bancal.
Je vais donc bien documenter et je me dit que si cet attribut n'est pas présent, ma classe va planter dès le développement, donc le développeur sera au courant ....

PS : pour ce que je viens de dire, ce n'est pas vrai dans tout les cas, mais dans mon exemple précis, c'est ce qui se passera ... ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer