Utilisation d'instance de classe. - PHP - Programmation
Marsh Posté le 17-05-2007 à 17:07:27
Avec quelle version de PHP développe-tu ? Si c'est la version 4, beaucoup te diront d'abandonner. C'est trop "merdique" et je veux bien les croire.
Ensuite, pourquoi ne pas avoir créé une classe qui gère seulement la base de données (connexion, requête, etc...). Avec ta question tu peux hériter de cette classe et utiliser toutes (sous réserve de ne pas être en "private" ) les méthodes appropriées.
C'est comme ca que je fonctionne. Je ne prétend pas que c'est la meilleur méthode. Mais jusqu'à présent je n'ai pas à m'en plaindre
Dernière question : Est-ce que tu créé une instance $db à chaque changement de page ?
Marsh Posté le 18-05-2007 à 11:57:37
Salut !
Tout d'abord merci pour ta réponse
Bon, pour ce qui est de la version de PHP que j'utilise et bien je t'avoue qu'en fait je sais pas trop... Car en fait j'ai découvert PHP (et HTML) il y juste quelques semaines. Avant j'ai surtout programmé en C++ ou Java (pour ce qui concerne les langages objets). Donc quand on m'a demandé de faire du PHP j'ai directement cherché à faire de l'objet comme j'en faisais d'habitude... Donc je suis passé sur le site du zéro, et quelques recherches google pour voir comment on faisait de l'objet en PHP et je me suis dit zou c'est partit
Le problème avec l'organisation du code que tu me propose, c'est que ce que fait est sensé se greffer sur une base déjà existante qui s'appelle phpTournoi. L'idée c'est que l'on veut rajouter la possibilité de donner un questionnaire. Donc en fait toute la partie connection avec la base de donnée est déjà existante de même la sécurisation via un login. Donc en fait je ne peux pas toucher a la classe qui gère et non plus faire de l'héritage. car l'instance $db est déjà créé au moment où l'utilisateur s'identifie...
Bon je pense que je vais devoir renoncer à l'objet même si c'est la solution que je trouvais la plus élégante pour faire ce genre de truc... Par ce que là, je vois pas ce que je peux faire...
Merci de ton aide
Marsh Posté le 18-05-2007 à 15:10:22
Amonchakai a écrit : Donc je suis passé sur le site du zéro, et quelques recherches google pour voir comment on faisait de l'objet en PHP et je me suis dit zou c'est partit ) |
T'as mal regardé. Si tu es en php5, ta syntaxe est obsolète.
Amonchakai a écrit : Le problème avec l'organisation du code que tu me propose, c'est que ce que fait est sensé se greffer sur une base déjà existante qui s'appelle phpTournoi. L'idée c'est que l'on veut rajouter la possibilité de donner un questionnaire. Donc en fait toute la partie connection avec la base de donnée est déjà existante de même la sécurisation via un login. Donc en fait je ne peux pas toucher a la classe qui gère et non plus faire de l'héritage. car l'instance $db est déjà créé au moment où l'utilisateur s'identifie... |
Il est initialisé où ton $db?
Pour ce qui est de renoncer à l'objet, je vois pas pourquoi...Alphazone n'a visiblement pas compris les reproches qu'il a lus/entendus sur l'objet en php 4. Ce n'est pas complet, il faut en connaitre les pièges, mais ça fonctionne.
Marsh Posté le 18-05-2007 à 15:17:38
Quand à avoir une classe pour gérer la base de données je ne vois pas ce qui t'en empêche, même si je ne vois pas l'intérêt d'en faire hériter ta Question...une Question instanciera la classe gérant la base pour y accéder, c'est tout.
Marsh Posté le 17-05-2007 à 12:26:47
Bonjour,
Tout d'abord je vais vous expliquer ce que je cherche à faire :
Je travaille actuellement sur la réalisation d'un questionnaire et je dois le faire en PHP. Ce qui me paraissait plus que logique c'est de le faire de façon objet. A savoir je crée une classe Question qui gère elle même tout ce qui est les requettes pour trouver dans la base de donnée son intitullé et les propositions de réponses a cette question. Cette classe doit également gérer elle même son affichage et enregistrer elle même la réponse de l'utlilisateur dans la base.
Ainsi je créé également une classe Questionnaire qui va chercher dans la base de donnée toutes les question qui sont asscié a ce questionnaire, et ensuite il appellera les fonctions de la classe Question pour faire toutes les opérations que je désire (a savoir l'affichage, et l'enregistrement dans la base de donnée).
Donc j'ai déja pas mal avancé dans le code : j'ai déja presque fini mes classes Question et Questionnaire...
Mon problème c'est que j'ai quelques difficultées pour réussir a récupérer ce que rentre l'utilisateur.
car pour afficher une question je fait simplement ça :
alors dans la page qui affiche la question je n'ai pas de problème. Mais quand je passe a l'autre page ValidFormulaire.php je n'arrive plus a créer une nouvelle instance de la classe Question... si je fait ça :
il me sort qu'il que quand j'apelle la ligne $dataBase->select() dans le constructeur de ma classe question que $dataBase n'est pas un objet... pourtant je vois pas pourquoi cela lui pose problème puisque avant cela marchait bien... ($db est une variable globale qui désigne une instance de classe qui gère la base de donnée...).
Bon après il y en a qui vont me dire : pourquoi créer un autre objet ? Et bien en fait je n'arrive pas a le passer d'une page a l'autre... Normalement il suffirai d'appeller les méthodes serialize() et unserialize() pour pouvoir se les passer via le conteneur assotiatif $_POST mais je n'y arrive pas...
J'ai également essayé de passer par des variable de session... mais là aussi ça a pas l'air de passer... Donc je me suis finalement rabatut sur la recréation de mon objet.
Donc en fait la question c'est : je vois pas pourquoi il ne veut plus considerer l'instance $db comme une instance d'objet dans la page suivante.
Voila je si vous aviez une idée ça m'intéresserai vu que ça fait bien une semaine que je suis sur ce problème...
Merci
ps : désolé pour ce post si long... j'espère que certain aurront le courage de le lire pour m'aider... En tous cas merci à vous