JeuWeb - Crée ton jeu par navigateur
[Résolu] Comment coder proprement ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Comment coder proprement ? (/showthread.php?tid=2381)

Pages : 1 2 3 4 5


RE: Aide pour coder "pro"^^ - pascal - 07-02-2008

Raoull a écrit :pascaltje, il ya un truc, même 2, que je cerne pas dans ce que tu as dit :

1) Si tu modifie une méthode dans une classe et/ou que tu rajoute une propriété à ta classe, tu es bien obligé de parcourir tout ton code pour insérer cette propriété et/ou cet argument à la fonction.

2)je ne comprends pas ton exemple, même avec une structure comme celle que tu donnes, je ne vois pas comment je peux passer de :
fonction verifierDonnees($login, $mail, $pass, $pass_confirmation, $race)
à
fonction verifierDonnees()
il faut bien passer les arguments à un moment ou à un autre... si tu ne les passe pas directement à l'appel de ta fonction, tu dois les passer avant, en settant chaque propriétés ($inscription->race='trucmuche')

ca revient au meme, ou bien il ya un truc qui m'a complètement échapper...

1. non, en fait c'est caché ( = encapsulé ) dans la fonction d'initialisation de l'objet.
mais ce n'est pas exactement le même code qu'harparine :
Code PHP :
<?php 
// pas top, on doit ajouter $race dans le script
$joueur = new Joueur($login, $mail, $pass, $pass_confirmation, $race);
// cool, en passant un tableau à la méthode, on ne modifie rien du script
$joueur = new Joueur($_POST);

avce ça on modifie :
_ le formulaire : ajout du champ 'race'
_ la classe :
- ajout du champ public $race;
- méthode Joueur() ou __construct(), on gére la récupération de l'index 'race', pas de modif de signature
- méthode verifierDonnees() : on vérifie la race en plus des autres données ( champ $this->race dans l'objet )

2. les arguments sont des membres de l'objet, donc ils sont déjà là, plus besoin de les passer lors de l'appel de verifierDonnees().
c'est la magie de l'encapsulation Smile

A+

Pascal


RE: Aide pour coder "pro"^^ - Raoull - 07-02-2008

Ok, c'est clair là !
Merci à vous 2 Smile

Et en effet initialiser un objet direct avec le tableau $_POST c'est une très bonne idée, j'avais encore jamais oser en fait.


RE: Aide pour coder "pro"^^ - Zamentur - 07-02-2008

Moi dans tout çà ce qui m'interpelle c'est pourquoi passer $_POST en argument!
C'est une superglobal et comme toute les superglobale elle est accessible partout même dans les classes si je me trompe pas (si?)


RE: Aide pour coder "pro"^^ - pascal - 07-02-2008

Zamentur a écrit :Moi dans tout çà ce qui m'interpelle c'est pourquoi passer $_POST en argument!
C'est une superglobal et comme toute les superglobale elle est accessible partout même dans les classes si je me trompe pas (si?)

bonne question Smile

l'idée ici c'est de passer un tableau ( de manière générale ) car on peut passer aussi par $_GET, $HTTP_POST_VARS... mais aussi n'importe quel tableau : sous entendu, on peut créer un tableau dans un script avec les données qu'on veut : des données de test par exemple Smile

ça permet de faire des tests unitaires, entre autres.

A+

Pascal


RE: Aide pour coder "pro"^^ - Harparine - 07-02-2008

Pas mal l'idée du tableau, je n'y avais pas pensé : ça évite même de modifier les arguments de la méthode. Merci Wink


RE: Aide pour coder "pro"^^ - pascal - 08-02-2008

j'ai commencé la remise en forme de tout ça sur le wiki :
http://wiki.jeuweb.org/tutoprog:passage_a_la_poo

A+

Pascal


RE: Aide pour coder "pro"^^ - Harparine - 08-02-2008

Super, c'est très clair ! Merci d'avoir pris le temps de faire tout ça Wink


RE: Aide pour coder "pro"^^ - Kassak - 08-02-2008

Merci à tous et merci a pascalje, je vais lire bien tranquillement tout ça, ça m'a l'air très bien expliqué Wink

Je vais essayer dès maintenant de passer en objet, ca va surement être super galère (revoir tout le code...pwaaaa), mais au final je vais beaucoup y gagner!