Salut,
Je m'intéresse depuis un bon moment à la POO, mais malgré les différents tutoriaux et articles parcourus, je n'arrive pas à cerner précisément comment tirer réellement partie des avantages qu'offrent la POO, au niveau de la programmation PHP.
Pour être plus précis, j'ai déjà utilisé la programmation orientée objet en C++, et je comprends son intérêt : pour simplifier à l'extrême, on crée des objets à partir de classes, on a des attributs qui permettent d'éviter d'avoir à passer 36 fois les mêmes paramètres à chaque fois qu'on appelle une fonction, on peut utiliser les attributs statiques si on veut avoir un attribut commun à toutes les instances, ... Bref, pour une application de bureau, je trouve que ça apporte pas mal de petits trucs sympas.
J'ai par contre beaucoup de mal à transposer la logique de la POO au langage PHP.
En effet, alors que dans une application "standard" la consommation de mémoire est la plupart du temps secondaire (ça ne change pas grand-chose qu’une application consomme 5Mo ou 10Mo de mémoire vive), alors que PHP ne dispose souvent que de quelques Mo maximum pour générer une page Web. De plus, tout changement de page efface les données en mémoire pour repartir à zéro.
J'arrive donc à un dilemme:
- Si j'utilise les variables de session afin de conserver l'ensemble de mes objets, ma consommation mémoire explose, puisque je me retrouve avec la quasi-totalité des données de mon site en mémoire (liste des membres du site, des discussions du forum, des images de la galerie photos, …) de façon quasi permanente. En effet, il suffit qu’un utilisateur se balade sur quelques pages pour que les objets créés s’accumulent en mémoire.
- Autre alternative, ne utiliser les variables de session, mais dans ce cas je perds une bonne partie de l'intérêt de la POO : ça reviens à devoir recréer les instances dont j'ai besoin à chaque chargement de page. Dans ce cas, je me retrouve à créer deux ou trois objets et une ou deux méthodes par objet. Peu d’intérêt donc d’avoir des attributs de classe, puisque de toute façon je n’appelle quasi-jamais plusieurs méthodes de la même classe sur une même page.
Qu'ai-je mal compris?
Merci de partager avec moi vos connaissances![]()
Partager