|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre à l'essai
![]() Inscription : avril 2007 Messages : 235 ![]() |
Bonjour,
Je débute au niveau de la programmation objet, et j'ai créé une classe article qui permet de gérer les articles. J'aimerais bien que celle-ci soit commenté, pour me dire si elle réaliser de manière poo. Si ma fasson de programmer poo est correcte. Merci d'avance Code :
|
||
|
|
00
|
|
|
#2 |
![]() ![]() Développeur Web Inscription : décembre 2006 Messages : 2 333 ![]() |
Salut,
pour un début je trouve ton approche pas mal, et puis je crois pas qu'il ai des "normes" pour dire si ton appli est POO...
__________________
Développeur | Zend Certified Engineer Étapes Pour mieux se servir du forum: 1. Commencez par lire les cours et tutoriels ; 2. Faites une recherche; 3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles; Nix>_Rien n'est plus pratique que la théorie |
|
|
00
|
|
|
#3 | ||||||||
|
Membre expérimenté
![]() Rémi BOURGARELDéveloppeur .NET Inscription : juin 2006 Messages : 426 ![]() |
euh au risque d'etre pas sympa, mais ça me semble pas du tout correct au niveau abstraction : normalement ton objet doit en avoir rien a faire de l'extérieur, il doit pouvoir marcher dans n'importe quel environnement d'appel :
par exemple tu appelle $_POST['idcategorie'] (tout comme "global $niveau_membre;"), ça veut donc dire que ta méthode doit etre appelée quand il y a un postback , ou que la variable $niveau_membre existe, ce qui si j'ecris un script comme celui ci : Code :
... Donc je te conseille de créer tes méthodes avec en entrée tout les paramètre dont tu as besoin, par exemple : Code :
Ensuite tu utilise $template, ce qui veut dire que ta classe Article s'occupe ET des donnée et du rendu. Fait plutot une classe RenduArticle, qui possède une méthode par exemple Code :
puis je te conseille aussi de mettre en attribut de ta classe tout les champs de l'article id_categorie, url court etc ... Apres tu pourra avoir un code de ce style : Code :
|
||||||||
|
00
|
|
|
#4 |
|
Membre à l'essai
![]() Inscription : avril 2007 Messages : 235 ![]() |
Merci Bourgui, je vais recoder ma classe en suivant tes conseilles.
|
|
|
00
|
|
|
#5 | ||
|
Membre à l'essai
![]() Inscription : avril 2007 Messages : 235 ![]() |
Bonjour,
j'ai modifié ma classe. Pouvez vous me dire si elle est correcte ? Merci d'avance pour votre aide. Code :
|
||
|
|
00
|
|
|
#6 | ||||
|
Membre expérimenté
![]() Rémi BOURGARELDéveloppeur .NET Inscription : juin 2006 Messages : 426 ![]() |
a premiere vu c'est pas mal, j'aurais ajouté une classe sql, de sorte que au lieu de
Code :
Code :
Les fonction getArticle et getAllArticle devrait etre statique (ça existe en php ?) si ça existe pas en php fait en des fonction d'une classe genre ArticleMaker, dans getArticle tu n'initialiserai pas this, mais un $article que tu retourne. Et dans getArticle tu devrai mettre l'id en paramètre au lieu de le récupérer dans this, en fait getArticle est comme un constructeur. Une remarque qui n'a rien a voir avec l'objet : sur un update sql met le nom des champs après le nom de la table c'est 12 fois plus simple a debugger que aller dans la base pour voir le nom des champs. |
||||
|
00
|
|
|
#7 |
|
Membre à l'essai
![]() Inscription : avril 2007 Messages : 235 ![]() |
Merci pour votre reponsse.
Pour la classe sql, je l'ajouterais par la suite. Pourquoi les fonction getArticle et getAllArticle devrait etre statique ? |
|
|
00
|
|
|
#8 | ||
|
Membre expérimenté
![]() Rémi BOURGARELDéveloppeur .NET Inscription : juin 2006 Messages : 426 ![]() |
Ben faut penser objet : a tu deja vu une voiture qui fabrique une voiture ? pour ma part non
Pour la classe sql, tu a pdo qui existe deja, mais perso j'ai la mienne qui me suffit Code :
|
||
|
00
|
|
|
#9 |
|
Membre à l'essai
![]() Inscription : avril 2007 Messages : 235 ![]() |
|
|
|
00
|
|
|
#10 | ||||||
|
Membre expérimenté
![]() Rémi BOURGARELDéveloppeur .NET Inscription : juin 2006 Messages : 426 ![]() |
une methode est une methode que tu utilise avec une classe et non avec une instance de cette classe :
classe d'exemple : Code :
Code :
Code :
|
||||||
|
00
|
|
|
#11 |
|
Membre à l'essai
![]() Inscription : avril 2007 Messages : 235 ![]() |
Bonjour,
merci pour les reponsses. Je programme en MVC, la classe article fait partit du modèle. Dans cette classe j'ai une fonction testDelete() et testUpdateAndInsert() Mais ces vérification doive se faire dans le controleur non. Donc en dehors de la classe article non ? |
|
|
00
|
|
|
#12 |
|
Membre expérimenté
![]() Rémi BOURGARELDéveloppeur .NET Inscription : juin 2006 Messages : 426 ![]() |
Non laisse dans Article, et meme je rajouterai que l'appel a testDelete et l'autre, se font avant TOUT update ou delete d'article (dans les methode UpdateArticle ou DeleteArticle tu fait la verif puis tu delete/update).
Le controleur ne fait que dire a la vue "hey affiche ça" et au modele "hey fait ça", et non modele "est ce que tu peut faire ça ? alors fait le", le modele se debrouille tout seul sur la partie du travail qui le concerne. Comme ça le jour ou t veut utiliser la base de ton cms dans un autre contexte t'es sur que coté donnée tout va se passer comme avant |
|
00
|
|
|
#13 | ||
|
Membre à l'essai
![]() Inscription : avril 2007 Messages : 235 ![]() |
Pour recupérer les données de plusieurs article je doit procéder de cette manière :
Code :
|
||
|
|
00
|
|
|
#14 |
|
Membre expérimenté
![]() Rémi BOURGARELDéveloppeur .NET Inscription : juin 2006 Messages : 426 ![]() |
le problème ici c'est que tu selectionne les id des articles, puis tu selectionne les infos allant avec chaques id, pourkoi tu ne sélectionne pas toutes les infos dès le début ?
Je me souviens avoir fait cette erreur sur un jeux : je selectionnait tout les id des cases que voyai le personnage et apres pour chaques case j'allait chercher les infos --> beaucoup de requète pr rien |
|
00
|
|
|
#15 |
|
Membre à l'essai
![]() Inscription : avril 2007 Messages : 235 ![]() |
Ben enfaite c'est pour eviter d'utiliser des $donnees['title'], mais plutot getTitle(). Et je ne c'est pas comment sa avec une seul requet.
|
|
|
00
|
|
|
#16 | ||
|
Membre expérimenté
![]() Rémi BOURGARELDéveloppeur .NET Inscription : juin 2006 Messages : 426 ![]() |
voila une piste,
j'ai un objet (ma table table_ersonne a deux champ : id et nom); Code :
|
||
|
00
|
|
|
#17 |
|
Membre à l'essai
![]() Inscription : avril 2007 Messages : 235 ![]() |
Et pour les recupperer, je fai comment ?
|
|
|
00
|
|
|
#18 |
|
Membre expérimenté
![]() Rémi BOURGARELDéveloppeur .NET Inscription : juin 2006 Messages : 426 ![]() |
tu parcours le tableau retourné par la fonction qui est un tableau de personne
$array_personne[X] est une personne, donc je peut faire echo $array_personne[X]->nom ; |
|
00
|
|
|
#19 |
|
Membre à l'essai
![]() Inscription : avril 2007 Messages : 235 ![]() |
Comment je fai pour parcourire le tableau jusqu'a la fin de manière automatisé ?
|
|
|
00
|
|
|
#20 | ||
|
Membre expérimenté
![]() Rémi BOURGARELDéveloppeur .NET Inscription : juin 2006 Messages : 426 ![]() |
comme un tableau normal
Code :
|
||
|
00
|
Copyright © 2000-2012 - www.developpez.com