Les constructeurs

Explication des constructeurs

11/09/2008 1043 lectures 4 commentaires 5/5 (2 votes)
Pour ceux qui n'ont pas lu le cours précédent, je vous conseille de le faire car nous allons repartir du même scénario pour l'explication des constructeurs. Pour résumer, nous voulons créer une page de gestion de personnes. Nous avons donc créer une classe personnes qui contient 4 champs : id, nom, prenom et trigramme. Un trigramme est la première lettre du prénom de la personne suivant des deux premières lettres du nom de cette personne.

Le soucis avec la classe comme nous l'avons vu dans le cours précédent est qu'une fois la personne créée, il faut initialiser tous ses champs avec la syntaxe $objet->champ = valeur. Ce n'est vraiment pas pratique. Voilà pourquoi les constructeurs ont été créés.

Un constructeur est une fonction spéciale d'une classe. Cette fonction sera automatiquement appelée par PHP lorsqu'un objet de la classe sera créé avec le mot clé new. La seule contrainte pour cette fonction est qu'elle doit porter le même nom que le nom de la classe. Reprenons le code du cours précédent :



Ce code se contente de créer deux objets de la classe personnes, de fixer leurs propriétés et de les afficher. Nous allons maintenant implémenter un constructeur. Le rôle d'un constructeur est d'initialiser les champs d'un objet. En effet, étant donné qu'il se lance à la création de l'objet, il suffit de lui passer les valeurs des champs pour qu'il les initialise. Nous allons voir cela. En dessous de la fonction trigramme, tapez ceci :



Comme nous l'avons vu précédemment, cette fonction va être appelée lors de la création d'un objet de la classe personne quand celui-ci est créé avec le mot clé new. Cette fonction réceptionne en paramètre les valeurs que les champs de l'objet devront contenir. Nous initialisons alors les champs id, nom et prenom avec les valeurs passées en paramètre. Une fois ceci fait, nous appelons la fonction trigramme pour générer le trigramme. Autrement dit, une fois que l'objet sera créé, il sera inutile de générer son trigramme, celui-ci aura été généré par l'appel à la fonction depuis le constructeur.

Bien entendu, les valeurs doivent bien venir de quelque part, la création de l'objet change donc. Quand vous créez un objet, vous le faites ainsi :



En fait, quand vous ne déclarez pas de constructeur à vos classes, un constructeur par défaut est généré. Celui-ci ne contient aucun paramètre et ne fait rien. Mais il est appelé quand vous créez un objet. Par contre, si vous créez un constructeur et que vous voulez qu'il soit appelé, vous devez passer les valeurs requises en paramètres. Dans notre exemple, le code ne sera plus :



Mais :



La création du deuxième objet devra suivre la même règle. Comme vous le voyez, nous faisons passer les paramètres directement lors de la création de l'objet. Ainsi, quand l'objet sera créé, le constructeur attendant 3 paramètres sera exécuté. Les champs seront donc initialisés et la fonction trigramme sera donc appelée. Vous pouvez implémenter plusieurs constructeurs dans une classe à condition qu'ils aient tous un nombre de paramètres différent. Effectivement, il est imaginable de créer un constructeur qui prendra l'identifiant, le nom, le prénom et le trigramme du membre. Ainsi, on pourra initialiser le trigramme de la personne autrement que par la fonction trigramme.

Voter :

4 commentaires

  • nos.m a dit:

    14/02/2011

    Vraiment très clair, en attendant la suite

  • nos.m a dit:

    14/02/2011

    Vraiment très clair, en attendant la suite

  • cunimb a dit:

    22/10/2010

    Aussi excellent que le précédent.

    Enfin je comprends l'intérêt de la poo. En autodidacte ce n'est pas évident, mais avec ces 2 tutos c'est enfantin. Des explications détaillées, facilement compréhensibles pour un débutant, tout est limpide.

    Encore une fois MERCI, MERCI et encore MERCI.

    Monsieur Sébastien Sougnez, chapeau bas !

  • etudiant a dit:

    05/08/2010

    Merci pour tous ces excellents tutoriels
    j'ai appris beaucoup de choses sur site
    je te souhaite une bonne continuation
    encore une fois Merci

Ajouter un commentaire