Accueil » Articles » Développez des sites web dynamiques avec PhP et MySQL [Tuto en cours]

Développez des sites web dynamiques avec PhP et MySQL [Tuto en cours]

LES BASES DE LA PROGRAMMATION ORIENTEE OBJET

Il est fort possible que ce chapitre vous semble très abstrait à première vue et que vous ne compreniez pas tout du premier coup.

Pas d’inquiétude, c’est tout à fait normal : nous allons voir beaucoup de nouvelles choses et une nouvelle façon de coder ici.

Ce chapitre ne va être qu’une courte introduction à la programmation orientée objet (abrégée en POO) car vous avez besoin de quelques bases afin d’aborder sereinement les chapitres sur la gestion des erreurs puis sur les bases de données.

Je ne parlerai donc que du strict nécessaire et n’irai pas forcément dans le détail en ne vous apprenant que les bases. En effet, la POO est vaste et nécessiterait en soi tout un cours pour être correctement enseignée.

Le procédural contre l’orienté objet

Pour commencer, vous devez bien comprendre que la POO correspond juste à une autre manière d’arranger son code et de coder.

Il existe deux grandes façons de coder en PhP : soit de manière procédurale (c’est la façon dont nous codons depuis le début de ce cours), soit de manière orientée objet.

Lorsque l’on code en procédural, le code s’exécute de façon généralement linéaire, c’est-à-dire du haut vers le bas : on déclare des variables, on les utilise, une fonction s’exécute, puis une autre, etc.

La programmation orientée objet elle est beaucoup moins linéaire et on a plutôt tendance à casser le flux de notre script ou à créer différentes pages exécutant chacune une action bien précise.

Encore une fois le procédural et l’orienté objet ne sont que deux manières différentes et coder et d’arranger son code.

La POO comporte certains avantages : on peut très souvent créer un code plus clair qu’en procédural, qui sera plus facile à mettre à jour et réutilisable. C’est pour cela que pour de gros projets le code PhP est très souvent orienté objet.

Classes et objets : la théorie

La POO en PhP repose sur la création et l’utilisation de classes. Une classe est un script qui va contenir un ensemble de fonctions (que nous appellerons ici méthodes) et de variables (que nous appellerons propriétés) que nous allons définir.

Nous allons ensuite créer des objets à partir de ces classes. On dit alors qu’on instancie la classe, ou que l’objet est une instance de la classe.

Ces objets vont pouvoir se servir des méthodes et des propriétés définies dans leur classe, ce qui fait tout l’intérêt de la POO.

On compare souvent une classe à un moule et un objet à un gâteau : à partir du moule, vous pouvez faire autant de gâteaux que vous le souhaitez. Ces gâteaux seront tous semblables de par leur forme mais seront tout de même tous différents.

Cela doit peut être vous sembler un peu flou pour le moment mais pas d’inquiétude nous allons pratiquer très rapidement afin de rendre tout cela concret !

Retenez pour le moment qu’une classe est un ensemble cohérent de propriétés et de méthodes.

Création d’une classe

Commençons par créer notre première classe ensemble. Nous l’appellerons Visiteur. Cette classe va donc contenir un ensemble de méthodes et de propriétés.

Généralement, nous utiliserons un nouveau fichier pour chaque classe. Un fichier ne contiendra donc que la définition d’une classe, et nous inclurons ce fichier au besoin dans d’autres fichiers.

Cela permet d’avoir une meilleure organisation et lisibilité du code dans son ensemble.

On va donc créer un nouveau fichier appelé « visiteur.class.php ». C’est une convention que de nommer nos fichiers de classes « nomdelaclasse.class.php ».

Création classe PhP orienté objet

Beaucoup de nouvelles choses dans ce petit bout de code ! Comme vous pouvez le voir, nous avons créé notre classe Visiteur et lui avons attribué une propriété ($prenom) et deux méthodes : set_prenom et get_prenom.

Les mots clefs « public » et « private » correspondent à des droits d’accès : on définit si oui ou non il est possible d’accéder à nos propriétés et à nos méthodes en dehors de la classe. Il existe un troisième mot clef : protected. Nous expliquerons cependant tout cela en détail plus tard.

Nous avons donc créé deux méthodes : set_prenom et get_prenom. Ces deux méthodes ont pour rôle respectivement de définir un nom ou de récupérer et de le lire un nom.

On appelle ces méthodes des « setters » et des « getters ». A chaque fois qu’on définira une méthode chargée de mettre à jour une propriété, ce sera un setter et on fera commencer son nom par « set_ » par convention.

De même, à chaque fois qu’on créera une méthode pour lire une propriété, ce sera un getter et on fera commencer son nom par « get_ ».

Finalement, le mot clef $this fait référence à l’objet sur lequel on travaille actuellement. En effet, souvenez vous que nous allons créer des objets à partir de nos classes. $this sert également à faire passer la valeur de la propriété $prenom dans notre fonction.

Si ici par exemple on crée un nouvel objet « $visiteur1 » et qu’on lui attribue le prénom « Pierre », $this va nous servir à indiquer que l’on veut bien récupérer le prénom de l’objet $visiteur1.

Notez bien la syntaxe derrière $this : on utilise une flèche comme ceci : ->.

Instanciation d’une classe

Nous allons d’ailleurs dès maintenant instancier notre classe, c’est-à-dire créer des objets à partir de notre classe.

Pour cela, nous allons déjà créer un nouveau fichier que l’on va appeler « visiteur.php » dans lequel nous allons inclure le fichier de notre classe, puis nous créerons nos premiers objets.

Instanciation de classe PhP orienté objet

On instancie notre classe (on crée un nouvel objet) avec le mot clef new. Ici, nous créons deux nouveaux objets : $visiteur1 et $visiteur2. Ces objets sont issus de la même classe et partagent les mêmes méthodes et propriétés.

Ils sont pourtant différents : en effet, on attribue une valeur différente pour la propriété $prenom de chacun d’entre eux.

Création objets PhP orienté objet

Vous devriez commencer à comprendre un petit peu comment marche la logique de la POO en PhP et son intérêt. Il est vrai que dans ce cas là, les fonctions sont très simples et il n’y a pas d’intérêt à coder en POO.

Mais imaginez maintenant des classes utilisant des dizaines et des dizaines de méthodes et de propriétés (c’est le cas des classes des logiciels WordPress et PrestaShop, par exemple).

Vous serez alors bien content de ne pas avoir à réécrire tout le code à chaque fois ni même à le comprendre dans une certaine mesure mais de pouvoir l’utiliser tout simplement en créant de nouveaux objets.

L’héritage et l’encapsulation

La POO dispose d’un concept très puissant : l’héritage. Très simplement, cela veut dire que l’on peut créer des classes « filles » à partir de classes « mères » et que ces classes filles disposeront par défaut de toutes les méthodes et propriétés de leur classe mère.

Nous pouvons bien sûr, par la suite, ajouter de nouvelles méthodes et propriétés aux classes filles. On dit également qu’une classe fille va étendre les fonctionnalités d’une classe mère.

On définit une classe fille à partir d’une classe mère dans un nouveau fichier avec le mot clef extends :

Classe mère et fille PhP orienté objet

Le principe d’encapsulation est fondamental en POO. L’idée est que vous pouvez créer un meilleur code, plus « propre » et plus sécurisé en restreignant l’accès à certaines données.

Vous vous souvenez, j’espère, des mots clefs « private » et « public » que nous avions utilisé devant nos propriétés et nos méthodes. C’est grâce à eux que nous allons pouvoir gérer le degré d’accessibilité de nos propriétés et méthodes.

Nous avons le choix entre 3 niveaux : private, protected et public.

En utilisant private, seule la classe elle même a accès aux propriétés et méthodes.

En utilisant protected, la classe et les classes dérivées de celle-ci (c’est à dire les classes filles) ont accès aux propriétés et aux méthodes.

Enfin, en utilisant public, tout le monde a accès aux propriétés et aux méthodes, même à l’extérieur de la classe.

Voyons immédiatement un exemple ensemble :

Niveau accessibilité classe PhP orienté objet

PhP orienté objet

Ici, on commence par déclarer deux propriétés : $prenom (private) et $nom (public) et on écrit les setters correspondants. Ensuite, on définit le nom et le prénom de l’objet $visiteur1 et on tente d’accéder à ces nom et prénom depuis l’extérieur de la classe.

Comme la propriété $nom a été déclarée « public », on peut y accéder sans problème depuis l’extérieur de la classe. En revanche, lorsqu’on essaie d’accéder à $prenom, PhP renvoie une erreur fatale et termine l’exécution du script.

Propriété objet PhP orienté objet

Généralement, il est fortement conseillé de définir toutes les propriétés d’une classe en private ou protected, afin d’éviter des failles potentielles et de mieux pouvoir traiter les données reçues.

Nous en avons terminé avec notre petite initiation à la POO et vous voilà armé pour aborder sereinement les prochains chapitres.

17 commentaires

  1. abdelmalek derouich

    merci infiniment pour ces cours, j’été vraiment nul et maintenant je commence à n’avancer dans la création des sites WEB en utilisant le HTML, le CSS et le PHP et c’est grâce à vos cours minutieusement expliqués.

  2. bonjours ,je suis encore un petit peux débutant dans le codage , j’aimerais faire une page d’inscription et une de connexion en php et mysql je dispose d’une base de donnée . merci d’avance pour votre aide .
    ps : j’adore vos vidéo =)

  3. GLEIZE GÉRARD

    Bonjour Pierre
    Avant toute chose un grand merci pour ce que vous faîtes et honnêtement j’aurais bien aimé avoir eu un prof de votre acabit durant ma scolarité.
    Vu la qualité de vos tutoriels, j’ai franchi le cap pour essayer de construire un site qui pourrai être utile à mon épouse autoentrepreneuse depuis octobre 2014. De part vos encouragements ….
    *dixit : En résumé, ce cours s’adresse :
    Aussi bien au néophyte qu’à la personne expérimentée ;
    A tous ceux qui veulent apprendre à coder en HTML et en CSS.
    …… j’ai déroulé vos cours sur le HTML et CSS sans rencontrer de problèmes majeurs tant vos explications sont claires, nettes et précises. J’ai à cette occasion choisi Komodo comme éditeur de texte pour Linux. Je constate pour le php que vous ne parlez que de gedtit comme éditeur de texte pour Linux. Y a t-il une incompatibilité à poursuivre sur Komodo? Quel est l’outil le + approprié?

  4. Bocomba William Edouard

    bonjour,

    je suis William un de vos disciple Abidjan. En lisant le code source du site pierre-girraud.fr j’ai constater un bon nombre de balise link et de balise meta. Et je me pose la question de savoir a quoi elle servent? Par ailleurs je suis impatient de savourer la suite du cour sur php et mysql. Merci d’avance et surtout merci pour tout.

    Amicalement

    William

  5. Bonjour,

    Je te remercie de tout mon cœur Pierre!
    Tu consacre ton temps à partager des choses meilleures.
    Je suis débutant mais je croix de devenir pro, tes tutos sont claires et faciles à comprendre.
    Merci infiniement

  6. Salut, c’est vraiment génial ce que tu fais mais j’ai encore un problème, je n’arrive pas a créer un formulaire pour envoyer un mail ou pouvoir communiquez avec moi (pas un bloc mais vraiment une page de contact).
    Merci de bien vouloir m’aider…

    • Bonjour,

      J’explique déjà tout cela dans mes cours HTML / CSS et PhP… Je ne peux donc que vous conseillez de revoir les parties consacrées à cela (lien pour envoyer un fichier / un mail et partie formulaire HTML et PhP).

      Bonne continuation,
      Pierre

  7. Vous etes genial, j’ai vu vos cours sur youtube et votre adresses qui ma poussé avenir sur votre site. Mr pierre je suis un petit zero de la programmation mais suis pas mal j’aimerai vous assistez dans vos taches pour me former…! merci pour les cours suis content

  8. je voudrais que tu m’explique un peut comment fonctionne les fonction static en phph

  9. bonjour
    merci pour ce cours mais je ne vois pas la partie base de données et pourtant l’intitulé c’est cours complet!!!!

  10. Salut Pierre Giraud,

    Je viens de regarder le tuto sur HTML et CSS, c’est magnifique !!!
    Maintenant j’aimerais creer des sites dynamiques avec PHP MySQL.
    Pourriez vous m’aider s’il vous plait. Merci de votre aide en envoyant des tuto tres tres interessant.

Répondre

Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués d'une étoile *

*