Voici deux questions que l’on ma posé sur le chat de CodeS-SourceS à propos des classes abstraites en PHP5 :

  1. A quoi sert une classe abstraite ?
  2. Pourquoi l’utiliser ?

Je vais simplement faire un copier/coller de ce que j’ai pu répondre à cet utilisateur. Pas de grand tutoriaux ici, mais une réponse qui a pu aider quelqu’un, alors pourquoi pas vous ?!

<orion> sa parait compliqué au debut quand on a pas trop de notion de l'objet ds php, mais une fois pigé sa vient tout seul
<kmel> oki
<kmel> je pense ;)
<orion> et comme l'abtract est la classe primaire
<orion> tiens
<orion> http://www.manuelphp.com/php/language.oop5.abstract.php
<orion> c plus tôt simple ça
<kmel> Attends, je lis et reviens pour les questions :D
<orion> lol oki
<orion> moi je vais me chercher un café
<kmel> Ok, le code en soit je le comprends, mais en quel circonstance l'utilisé?

<orion> je vais essayer de t'expliquer en gros l'intérêt
<orion> honnêtement, il se trouve que sur des projets important
<orion> si tu t'occupes de ton site perso sa ne servira à rien
<orion> ce qui peut être intéressant avec les classes abstraites
<orion> c'est que tu peux te servir de l'héritage comme outils

<kmel> c'est un projet important ;-)
<orion> tu peux avoir une classe abstraite pour mysql
<orion> et tu peux très bien faire des filles pour postgre ou oracle par exemple
<orion> et une autre pour access
<orion> pour se connecter à différente base de donnée
<orion> tu as besoin d'une connexion
<orion> donc
<orion> ce que tu peux faire grâce à une classe abstraite
<orion> c'est une fonction commune
<orion> ce qui fait que tu te retrouves également avec des méthodes communes
<orion> tu utiliseras toujours les mêmes appels quel que ce soit le sgbd
<kmel> oki
<orion> par contre
<orion> tu instancies ta classe en fonction de la base
<kmel> style nom du server, user, pass, etc.?
<orion> tu peux faire de la factorisation quoi
<orion> moi je me sert par exemple de classes abstraites pour gagner du temps avec les dev de mes clients
<orion> je me conçois un framework commun
<orion> et j'ai plus qu'à l'injecter dans chaque projet
<orion> la plupart du temps tu l'utilises pour de la gestion de donnée
<orion> car c'est ce qui est le plus commun dans des projets quel que ce soit le client
<orion> le gain de temps n'est pas négligeable
<orion> et regarde le point sympa
<orion> t'as classes est adapté à oracle et mysql
<orion> un client se pointe avec un support access
<orion> no problem
<orion> tu as juste à créer une classe qui hérite de la parent
<orion> c'est vraiment pas négligeable
<orion> et même pour le debug c'est fantastique
<orion> s'il y a un bug ds ta classe abstraite
<orion> ds la parent si tu préfères
<orion> bin le bug sera corrigé pour tous les enfants
<orion> (toutes les classes étendues)
*<kmel> oki \o/
<kmel> sa j'ai compris xD
<orion> l'autre intérêt maintenant pour toi
<orion> c'est d'apprendre l'UML
<orion> car utiliser un schéma méthodologique
<orion> c'est la même logique que d'utiliser de l'objet bien pensé en php
<orion> car sa reste de la méthodologie avant tout
<kmel> ouep
<orion> voilà
<orion> sa te va comme explication ?
<kmel> bon, j'ai compris en gros le principe oui
<kmel> faudra l'appliquer maintenant :p
<orion> prends ton exemple de base de donnée
<orion> et tu verras
<orion> tu comprendras tout seul comment l'appliquer en l'écrivant
<orion> suffit d'être logique
<orion> hésites-pas à me demander quand je suis dispo
<kmel> ouep
<kmel> oki
<kmel> thx