|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2007 Messages : 81 ![]() |
Bonjour,
Voilà, je débute en POO notamment avec php. J'ai beau chercher des cours ou des sources à ce sujet mais je ne trouve pas grand chose. En fait, j'aimerai comprendre comment utiliser des classes pour récupérer les données d'un formulaire classique. En gros, j'aimerai stocker dans une bdd mysql, les informations d'un client (nom, prenom...) donc j'aurai une class client avec ses attribut (nom, prenom, email....) surement une class mysql mais je ne sais pas vraiment comment m'y prendre. Quelqu'un pourrait-il m'aider ? Au moins me guider sur les démarches à faire. Merci d'avance. |
|
|
00
|
|
|
#2 | ||
![]() ![]() Thomas RambaudDéveloppeur Web Inscription : décembre 2007 Messages : 2 139 ![]() |
Il faut que tu modélises les entités que tu as en base de données sous forme de classe d'objets (i.e : une classe client). C'est la base de la base : http://php.developpez.com/faq/?page=classes
Ensuite, ce n'est pas parce que tu évolues dans un langage objet que tu dois utiliser ou créer des classes tout le temps. En PHP, pour récupérer un champ de formulaire il suffit d'utiliser la superglobal $_REQUEST (ou $_GET / $_POST). Exemple, inscription d'un client dans le site : Code :
|
||
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2007 Messages : 81 ![]() |
Merci d'avoir répondu aussi rapidement déjà
Peux-tu me dire ce que contient ta fonction save() ? je suppose qu'elle se trouve dans la class client. |
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2007 Messages : 81 ![]() |
Peux-tu me dire aussi quelles fonctions doit contenir ma class client ?
Si c'est à cet endroit que jdois mettre ma fonction insertion dans la base. |
|
|
00
|
|
|
#5 | ||
![]() ![]() Thomas RambaudDéveloppeur Web Inscription : décembre 2007 Messages : 2 139 ![]() |
Cela dépend de ce qu'est une entité client pour toi.
L'insertion de la base peut se faire dans la classe "client", ou dans une classe "db". Mais il faut exposer une méthode dans la classe client qui permet d'insérer ou mettre à jour la base de données. Code :
|
||
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2007 Messages : 81 ![]() |
Pour le moment, j'ai 3 fichiers disons, index.php avec mon formulaire, classClient.php et classMysql.php (dans lequel je fais ma connexion à la base et ou je fais mes requetes SQL) ça semble cohérent ?
|
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Thierry NFC & DevWeb Inscription : avril 2006 Messages : 1 175 ![]() |
Si tu passe ton identifiant de connexion a tes appelles aux class qui requièrent une requête, tu peux très bien intégrer tes requêtes au sein des class.
Autrement, il faut que chaque class?????.php héritent de classMysql.php. Personnellement je préfère la première option. Quelqu'un d'autre saura sûrement me corriger si je me trompe. |
|
|
00
|
|
|
#8 | ||||||
![]() ![]() Thomas RambaudDéveloppeur Web Inscription : décembre 2007 Messages : 2 139 ![]() |
Citation:
Code :
Code :
Citation:
À bientôt, |
||||||
|
00
|
|
|
#9 |
|
Membre Expert
![]() Thierry NFC & DevWeb Inscription : avril 2006 Messages : 1 175 ![]() |
Bonjour ThomasR,
Tes remarques ton toujours très judicieuses. J'avoue humblement ne pas être un gourou de la programmation objet, même si je l'utilise. J'aimerais donc avoir une petite précision. Est ce que tu veux dire que ma remarque "il faut que chaque class?????.php héritent de classMysql.php" est une pure ineptie? ou simplement qu'il est préférable d'utiliser la notion de singleton pour préserver quelque chose? et dans ce cas quoi? La méthode que j'utilise depuis pas mal d'années fonctionne bien, mais je serais prêt à changer ma façon de faire s'il y a un intérêt réel à le faire ou si ce que je fais présente un risque que je n'ai jamais évalué. Merci |
|
|
10
|
|
|
#10 | |
![]() ![]() Thomas RambaudDéveloppeur Web Inscription : décembre 2007 Messages : 2 139 ![]() |
Citation:
D'après moi toutes entités ne devraient pas hériter d'une classe "classMysql", conceptuellement cela ne colle pas. Le principe de l'héritage c'est que le classe qui hérite doit représenter une entité plus spécifique que la classe mère. Concrètement, on ne souhaite pas signifier que la classe fille est une instance de la classe SQL mais qu'elle a une instance de la classe SQL. Un autre souci avec cette méthode d'héritage de "classMysql" c'est que cela appelle le constructeur de cette classe énormément de fois alors que souvent ce constructeur contient par exemple un appel à mysql_connect, alors qu'un seul serait nécessaire dans toute l'application. Le gain de performance est énorme à utiliser un singleton dans ce cas. Avec un singleton ca allège aussi pas mal le code. |
|
|
10
|
|
|
#11 |
|
Membre Expert
![]() Thierry NFC & DevWeb Inscription : avril 2006 Messages : 1 175 ![]() |
Salut ThomasR
Tu confirme ce que j'écrivais plus haut, LIMPIDE, pour moi qui ai tant de mal à penser Objet En tous cas dans mes développements, je ne fais pas usage de l'héritage de classe "classMysql" pour mes objets qui utilisent la BDD. Je passe l'identifiant de connexion à chaque usage de méthode faisant appel à la BDD. Tu donnes des cours de conceptualisation objet ? |
|
|
10
|
|
|
#12 |
|
Nouveau Membre du Club
![]() à la recherche d'un stage de fin de formation dans le décisionnel Inscription : juillet 2002 Messages : 117 ![]() |
merci pour cet échange très instructif
riete, peux tu mettre stp ton exemple ici pour qu'on puisse s'inspirer de travail réaliser. Merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com